Class ARBTransformFeedback3
- java.lang.Object
-
- org.lwjgl.opengl.ARBTransformFeedback3
-
public class ARBTransformFeedback3 extends java.lang.Object
Native bindings to the ARB_transform_feedback3 extension.This extension further extends the transform feedback capabilities provided by the EXT_transform_feedback, NV_transform_feedback, and NV_transform_feedback2 extensions. Those extensions provided a new transform feedback mode, where selected vertex attributes can be recorded to a buffer object for each primitive processed by the GL.
This extension provides increased flexibility in how vertex attributes can be written to buffer objects. Previous extensions allowed applications to record a set of attributes interleaved into a single buffer object (interleaved mode) or to record into multiple objects, but with only a single attribute per buffer (separate mode). This extension extends interleaved mode to write into multiple buffers, with multiple attributes per buffer. This capability is supported for all three styles of transform feedback:
- "EXT"-style GLSL transform feedback (EXT_transform_feedback), where a list of varyings is provided prior to linking a program object and is used whenever that program object is used.
- "NV"-style GLSL transform feedback (NV_transform_feedback2), where "locations" of active varyings are queried after linking and are then passed to a function that sets the active transform feedback varyings for the program object. Unlike the "EXT"-style mode, the set of varyings to capture can be changed without relinking.
- Transform feedback for fixed-function or assembly vertex/geometry shaders (NV_transform_feedback2), where applications specify a set of canonical attribute enums/numbers to capture.
Additionally, this extension adds new support for multiple separate vertex streams. New geometry shader functionality provided by the
ARB_gpu_shader5
and NV_gpu_program5 extensions allows geometry shaders to direct each vertex arbitrarily at a specified vertex stream. For example, a geometry program might write each "regular" vertex it emits to one vertex stream while writing some per-primitive data it computes to a second vertex stream. This extension allows applications to choose a vertex stream for each buffer object it writes to, and allows the vertices written to each vertex stream to be recorded in separate buffer objects. Only one stream may be selected for rasterization, and in the initial implementation, the geometry shader output topology must bePOINTS
if multiple streams are used. When geometry shaders are not used, or when an old geometry shader not writing multiple streams is used, all vertices produced by the GL are directed at the stream numbered zero. The set of transform feedback-related query targets is extended to accommodate multiple vertex streams, so it is possible to count the number of processed and recorded primitives for each stream separately.Requires
OpenGL 3.0
or EXT_transform_feedback or NV_transform_feedback. Promoted to core inOpenGL 4.0
.
-
-
Field Summary
Fields Modifier and Type Field and Description static int
GL_MAX_TRANSFORM_FEEDBACK_BUFFERS
GL_MAX_VERTEX_STREAMSAccepted by thepname
parameter of GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static void
glBeginQueryIndexed(int target, int index, int id)
Begins a query object on an indexed targetstatic void
glDrawTransformFeedbackStream(int mode, int id, int stream)
Renders primitives using a count derived from a specifed stream of a transform feedback object.static void
glEndQueryIndexed(int target, int index)
Ends a query object on an indexed targetstatic int
glGetQueryIndexedi(int target, int index, int pname)
Returns parameters of an indexed query object target.static void
glGetQueryIndexediv(int target, int index, int pname, int[] params)
Array version of:GetQueryIndexediv
static void
glGetQueryIndexediv(int target, int index, int pname, java.nio.IntBuffer params)
Returns parameters of an indexed query object target.
-
-
-
Field Detail
-
GL_MAX_TRANSFORM_FEEDBACK_BUFFERS, GL_MAX_VERTEX_STREAMS
Accepted by thepname
parameter of GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv.
-
-
Method Detail
-
glDrawTransformFeedbackStream
public static void glDrawTransformFeedbackStream(int mode, int id, int stream)
Renders primitives using a count derived from a specifed stream of a transform feedback object.- Parameters:
mode
- what kind of primitives to render. 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
id
- the name of a transform feedback object from which to retrieve a primitive countstream
- the index of the transform feedback stream from which to retrieve a primitive count
-
glBeginQueryIndexed
public static void glBeginQueryIndexed(int target, int index, int id)
Begins a query object on an indexed target- Parameters:
target
- the target type of query object established betweenglBeginQueryIndexed
and the subsequentEndQueryIndexed
. One of:SAMPLES_PASSED
PRIMITIVES_GENERATED
TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
TIME_ELAPSED
TIMESTAMP
ANY_SAMPLES_PASSED
ANY_SAMPLES_PASSED_CONSERVATIVE
index
- the index of the query target upon which to begin the queryid
- the name of a query object
-
glEndQueryIndexed
public static void glEndQueryIndexed(int target, int index)
Ends a query object on an indexed target- Parameters:
target
- the target type of query object to be concluded. One of:SAMPLES_PASSED
PRIMITIVES_GENERATED
TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
TIME_ELAPSED
TIMESTAMP
ANY_SAMPLES_PASSED
ANY_SAMPLES_PASSED_CONSERVATIVE
index
- the index of the query target upon which to end the query
-
glGetQueryIndexediv
public static void glGetQueryIndexediv(int target, int index, int pname, java.nio.IntBuffer params)
Returns parameters of an indexed query object target.- Parameters:
target
- a query object target. One of:SAMPLES_PASSED
PRIMITIVES_GENERATED
TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
TIME_ELAPSED
TIMESTAMP
ANY_SAMPLES_PASSED
ANY_SAMPLES_PASSED_CONSERVATIVE
index
- the index of the query object targetpname
- the symbolic name of a query object target parameterparams
- the requested data
-
glGetQueryIndexedi
public static int glGetQueryIndexedi(int target, int index, int pname)
Returns parameters of an indexed query object target.- Parameters:
target
- a query object target. One of:SAMPLES_PASSED
PRIMITIVES_GENERATED
TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN
TIME_ELAPSED
TIMESTAMP
ANY_SAMPLES_PASSED
ANY_SAMPLES_PASSED_CONSERVATIVE
index
- the index of the query object targetpname
- the symbolic name of a query object target parameter
-
glGetQueryIndexediv
public static void glGetQueryIndexediv(int target, int index, int pname, int[] params)
Array version of:GetQueryIndexediv
-
-