Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright LWJGL. All rights reserved.
* License terms: https://www.lwjgl.org/license
* MACHINE GENERATED FILE, DO NOT EDIT
*/
package org.lwjgl.opengl;
import java.nio.*;
import org.lwjgl.system.*;
import static org.lwjgl.system.Checks.*;
import static org.lwjgl.system.JNI.*;
import static org.lwjgl.system.MemoryStack.*;
import static org.lwjgl.system.MemoryUtil.*;
/**
* 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
* {@link ARBGPUShader5 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 be {@link GL11#GL_POINTS POINTS} 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.
*/
public class ARBTransformFeedback3 {
/** Accepted by the {@code pname} parameter of GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv. */
public static final int
GL_MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70,
GL_MAX_VERTEX_STREAMS = 0x8E71;
static { GL.initialize(); }
protected ARBTransformFeedback3() {
throw new UnsupportedOperationException();
}
static boolean isAvailable(GLCapabilities caps) {
return checkFunctions(
caps.glDrawTransformFeedbackStream, caps.glBeginQueryIndexed, caps.glEndQueryIndexed, caps.glGetQueryIndexediv
);
}
// --- [ glDrawTransformFeedbackStream ] ---
/**
* Renders primitives using a count derived from a specifed stream of a transform feedback object.
*
* @param mode what kind of primitives to render. One of:
* @param id the name of a transform feedback object from which to retrieve a primitive count
* @param stream the index of the transform feedback stream from which to retrieve a primitive count
*/
public static native void glDrawTransformFeedbackStream(@NativeType("GLenum") int mode, @NativeType("GLuint") int id, @NativeType("GLuint") int stream);
// --- [ glBeginQueryIndexed ] ---
/**
* Begins a query object on an indexed target
*
* @param target the target type of query object established between {@code glBeginQueryIndexed} and the subsequent {@link #glEndQueryIndexed EndQueryIndexed}. One of:
* @param index the index of the query target upon which to begin the query
* @param id the name of a query object
*/
public static native void glBeginQueryIndexed(@NativeType("GLenum") int target, @NativeType("GLuint") int index, @NativeType("GLuint") int id);
// --- [ glEndQueryIndexed ] ---
/**
* Ends a query object on an indexed target
*
* @param target the target type of query object to be concluded. One of:
* @param index the index of the query target upon which to end the query
*/
public static native void glEndQueryIndexed(@NativeType("GLenum") int target, @NativeType("GLuint") int index);
// --- [ glGetQueryIndexediv ] ---
/** Unsafe version of: {@link #glGetQueryIndexediv GetQueryIndexediv} */
public static native void nglGetQueryIndexediv(int target, int index, int pname, long params);
/**
* Returns parameters of an indexed query object target.
*
* @param target a query object target. One of:
* @param index the index of the query object target
* @param pname the symbolic name of a query object target parameter
* @param params the requested data
*/
public static void glGetQueryIndexediv(@NativeType("GLenum") int target, @NativeType("GLuint") int index, @NativeType("GLenum") int pname, @NativeType("GLint *") IntBuffer params) {
if (CHECKS) {
check(params, 1);
}
nglGetQueryIndexediv(target, index, pname, memAddress(params));
}
/**
* Returns parameters of an indexed query object target.
*
* @param target a query object target. One of:
* @param index the index of the query object target
* @param pname the symbolic name of a query object target parameter
*/
@NativeType("void")
public static int glGetQueryIndexedi(@NativeType("GLenum") int target, @NativeType("GLuint") int index, @NativeType("GLenum") int pname) {
MemoryStack stack = stackGet(); int stackPointer = stack.getPointer();
try {
IntBuffer params = stack.callocInt(1);
nglGetQueryIndexediv(target, index, pname, memAddress(params));
return params.get(0);
} finally {
stack.setPointer(stackPointer);
}
}
/** Array version of: {@link #glGetQueryIndexediv GetQueryIndexediv} */
public static void glGetQueryIndexediv(@NativeType("GLenum") int target, @NativeType("GLuint") int index, @NativeType("GLenum") int pname, @NativeType("GLint *") int[] params) {
long __functionAddress = GL.getICD().glGetQueryIndexediv;
if (CHECKS) {
check(__functionAddress);
check(params, 1);
}
callPV(__functionAddress, target, index, pname, params);
}
}