| '''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 ) |
|
|
| |
| glDrawElementsInstancedARB=wrapper.wrapper(glDrawElementsInstancedARB).setInputArraySize( |
| 'indices', None |
| ) |
| |