1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
'''OpenGL extension NV.bindless_multi_draw_indirect
This module customises the behaviour of the
OpenGL.raw.GL.NV.bindless_multi_draw_indirect to provide a more
Python-friendly API
Overview (from the spec)
This extension combines NV_vertex_buffer_unified_memory and
ARB_multi_draw_indirect to allow the processing of multiple drawing
commands, whose vertex and index data can be sourced from arbitrary
buffer locations, by a single function call.
The NV_vertex_buffer_unified_memory extension provided a mechanism to
specify vertex attrib and element array locations using GPU addresses.
Prior to this extension, these addresses had to be set through explicit
function calls. Now the ability to set the pointer addresses indirectly
by extending the GL_ARB_draw_indirect mechanism has been added.
Combined with other "bindless" extensions, such as NV_bindless_texture and
NV_shader_buffer_load, it is now possible for the GPU to create draw
commands that source all resource inputs, which are common to change
frequently between draw calls from the GPU: vertex and index buffers,
samplers, images and other shader input data stored in buffers.
The official definition of this extension is available here:
http://www.opengl.org/registry/specs/NV/bindless_multi_draw_indirect.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.NV.bindless_multi_draw_indirect import *
from OpenGL.raw.GL.NV.bindless_multi_draw_indirect import _EXTENSION_NAME
def glInitBindlessMultiDrawIndirectNV():
'''Return boolean indicating whether this extension is available'''
from OpenGL import extensions
return extensions.hasGLExtension( _EXTENSION_NAME )
### END AUTOGENERATED SECTION
|