|
'''OpenGL extension ARB.base_instance |
|
|
|
This module customises the behaviour of the |
|
OpenGL.raw.GL.ARB.base_instance to provide a more |
|
Python-friendly API |
|
|
|
Overview (from the spec) |
|
|
|
This extension allows the offset within buffer objects used for instanced |
|
rendering to be specified. This is congruent with the <first> parameter |
|
in glDrawArrays and the <basevertex> parameter in glDrawElements. When |
|
instanced rendering is performed (for example, through |
|
glDrawArraysInstanced), instanced vertex attributes whose vertex attribute |
|
divisors are non-zero are fetched from enabled vertex arrays per-instance |
|
rather than per-vertex. However, in unextended OpenGL, there is no way to |
|
define the offset into those arrays from which the attributes are fetched. |
|
This extension adds that offset in the form of a <baseinstance> parameter |
|
to several new procedures. |
|
|
|
The <baseinstance> parameter is added to the index of the array element, |
|
after division by the vertex attribute divisor. This allows several sets of |
|
instanced vertex attribute data to be stored in a single vertex array, and |
|
the base offset of that data to be specified for each draw. Further, this |
|
extension exposes the <baseinstance> parameter as the final and previously |
|
undefined structure member of the draw-indirect data structure. |
|
|
|
The official definition of this extension is available here: |
|
http://www.opengl.org/registry/specs/ARB/base_instance.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.base_instance import * |
|
from OpenGL.raw.GL.ARB.base_instance import _EXTENSION_NAME |
|
|
|
def glInitBaseInstanceARB(): |
|
'''Return boolean indicating whether this extension is available''' |
|
from OpenGL import extensions |
|
return extensions.hasGLExtension( _EXTENSION_NAME ) |
|
|
|
|
|
glDrawElementsInstancedBaseInstance=wrapper.wrapper(glDrawElementsInstancedBaseInstance).setInputArraySize( |
|
'indices', None |
|
) |
|
|
|
glDrawElementsInstancedBaseVertexBaseInstance=wrapper.wrapper(glDrawElementsInstancedBaseVertexBaseInstance).setInputArraySize( |
|
'indices', None |
|
) |
|
|