'''OpenGL extension ARB.draw_instanced

This module customises the behaviour of the 
OpenGL.raw.GL.ARB.draw_instanced to provide a more 
Python-friendly API

Overview (from the spec)
	
	A common use case in GL for some applications is to be able to
	draw the same object, or groups of similar objects that share
	vertex data, primitive count and type, multiple times.  This 
	extension provides a means of accelerating such use cases while 
	restricting the number of API calls, and keeping the amount of 
	duplicate data to a minimum.
	
	This extension introduces two draw calls which are conceptually
	equivalent to a series of draw calls.  Each conceptual call in
	this series is considered an "instance" of the actual draw call.
	
	This extension also introduces a read-only built-in variable to
	GLSL which contains the "instance ID."  This variable initially
	contains 0, but increases by one after each conceptual draw call.
	
	By using the instance ID or multiples thereof as an index into
	a uniform array containing transform data, vertex shaders can 
	draw multiple instances of an object with a single draw call.

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/ARB/draw_instanced.txt
'''
from OpenGL import platform, constant, arrays
from OpenGL import extensions, wrapper
import ctypes
from OpenGL.raw.GL import _types, _glgets
from OpenGL.raw.GL.ARB.draw_instanced import *
from OpenGL.raw.GL.ARB.draw_instanced import _EXTENSION_NAME

def glInitDrawInstancedARB():
    '''Return boolean indicating whether this extension is available'''
    from OpenGL import extensions
    return extensions.hasGLExtension( _EXTENSION_NAME )

# INPUT glDrawElementsInstancedARB.indices size not checked against 'count,type'
glDrawElementsInstancedARB=wrapper.wrapper(glDrawElementsInstancedARB).setInputArraySize(
    'indices', None
)
### END AUTOGENERATED SECTION