Class NVBindlessMultiDrawIndirect
- java.lang.Object
-
- org.lwjgl.opengl.NVBindlessMultiDrawIndirect
-
public class NVBindlessMultiDrawIndirect extends java.lang.Object
Native bindings to the NV_bindless_multi_draw_indirect extension.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.
Requires
OpenGL 4.3
,NV_vertex_buffer_unified_memory
,
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static void
glMultiDrawArraysIndirectBindlessNV(int mode, java.nio.ByteBuffer indirect, int drawCount, int stride, int vertexBufferCount)
Behaves similar toMultiDrawArraysIndirect
, except thatindirect
is treated as an array ofdrawCount
DrawArraysIndirectBindlessCommandNV structures:static void
glMultiDrawElementsIndirectBindlessNV(int mode, int type, java.nio.ByteBuffer indirect, int drawCount, int stride, int vertexBufferCount)
Behaves similar toMultiDrawElementsIndirect
, except thatindirect
is treated as an array ofdrawCount
DrawElementsIndirectBindlessCommandNV structures:
-
-
-
Method Detail
-
glMultiDrawArraysIndirectBindlessNV
public static void glMultiDrawArraysIndirectBindlessNV(int mode, java.nio.ByteBuffer indirect, int drawCount, int stride, int vertexBufferCount)
Behaves similar toMultiDrawArraysIndirect
, except thatindirect
is treated as an array ofdrawCount
DrawArraysIndirectBindlessCommandNV structures:typedef struct { GLuint index; GLuint reserved; GLuint64 address; GLuint64 length; } BindlessPtrNV; typedef struct { DrawArraysIndirectCommand cmd; BindlessPtrNV vertexBuffers[]; } DrawArraysIndirectBindlessCommandNV;
- Parameters:
mode
- the primitive mode. One of:POINTS
LINE_STRIP
LINE_LOOP
LINES
POLYGON
TRIANGLE_STRIP
TRIANGLE_FAN
TRIANGLES
QUAD_STRIP
QUADS
LINES_ADJACENCY
LINE_STRIP_ADJACENCY
TRIANGLES_ADJACENCY
TRIANGLE_STRIP_ADJACENCY
PATCHES
indirect
- an array of DrawArraysIndirectBindlessCommandNV structures (see the extension spec for more information)drawCount
- the number of structures in theindirect
arraystride
- the size of one DrawArraysIndirectBindlessCommandNV structurevertexBufferCount
- the number of vertex buffers in the DrawArraysIndirectBindlessCommandNV structure
-
glMultiDrawElementsIndirectBindlessNV
public static void glMultiDrawElementsIndirectBindlessNV(int mode, int type, java.nio.ByteBuffer indirect, int drawCount, int stride, int vertexBufferCount)
Behaves similar toMultiDrawElementsIndirect
, except thatindirect
is treated as an array ofdrawCount
DrawElementsIndirectBindlessCommandNV structures:typedef struct { GLuint index; GLuint reserved; GLuint64 address; GLuint64 length; } BindlessPtrNV; typedef struct { DrawElementsIndirectCommand cmd; GLuint reserved; BindlessPtrNV indexBuffer; BindlessPtrNV vertexBuffers[]; } DrawElementsIndirectBindlessCommandNV;
- Parameters:
mode
- the primitive mode. One of:POINTS
LINE_STRIP
LINE_LOOP
LINES
POLYGON
TRIANGLE_STRIP
TRIANGLE_FAN
TRIANGLES
QUAD_STRIP
QUADS
LINES_ADJACENCY
LINE_STRIP_ADJACENCY
TRIANGLES_ADJACENCY
TRIANGLE_STRIP_ADJACENCY
PATCHES
type
- the data type of the element indices. One of:UNSIGNED_BYTE
UNSIGNED_SHORT
UNSIGNED_INT
indirect
- an array of DrawElementsIndirectBindlessCommandNV structures (see the extension spec for more information)drawCount
- the number of structures in theindirect
arraystride
- the size of one DrawElementsIndirectBindlessCommandNV structurevertexBufferCount
- the number of vertex buffers in the DrawElementsIndirectBindlessCommandNV structure
-
-