Added support for OpenGL 4.1 and new extensions.

This commit is contained in:
Ioannis Tsakpinis 2010-07-27 15:33:22 +00:00
parent 19b501fc46
commit 5842103580
23 changed files with 1874 additions and 78 deletions

View File

@ -7,7 +7,7 @@
<fileset dir="${lwjgl.src.native}/generated" includes="**"/>
</delete>
</target>
<!-- Compiles the Java generator source code -->
<target name="generators" description="Compiles the native method generators">
<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" includes="org/lwjgl/util/generator/**.java" source="1.5" target="1.5" taskname="generator">
@ -17,6 +17,7 @@
<javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" source="1.4" target="1.4" taskname="generator">
<include name="org/lwjgl/opengl/GLSync.java"/>
<include name="org/lwjgl/opengl/AMDDebugOutputCallback.java"/>
<include name="org/lwjgl/opengl/ARBDebugOutputCallback.java"/>
<include name="org/lwjgl/opengl/PointerWrapper.java"/>
</javac>
</target>
@ -42,7 +43,7 @@
<fileset dir="${lwjgl.src.templates}" includes="org/lwjgl/openal/AL10.java, org/lwjgl/openal/AL11.java, org/lwjgl/openal/EFX10.java"/>
</apply>
</target>
<!-- Generate OpenAL [DEBUG] -->
<target name="generate-openal-debug" depends="generators" description="Generates java and native source for AL">
<apply executable="apt" parallel="true">
@ -111,7 +112,7 @@
<fileset dir="${lwjgl.src.templates}" includes="${opengl-template-pattern}"/>
</apply>
</target>
<!-- Generate context capabilities -->
<target name="generate-opengl-capabilities" depends="generators" description="Generates java and native source for GL">
<apply executable="apt" parallel="true">
@ -125,8 +126,8 @@
<arg value="-Acontextspecific"/>
<fileset dir="${lwjgl.src.templates}" includes="${opengl-template-pattern}"/>
</apply>
</target>
</target>
<!-- Generate context capabilities [DEBUG] -->
<target name="generate-opengl-capabilities-debug" depends="generators" description="Generates java and native source for GL">
<apply executable="apt" parallel="true">
@ -141,5 +142,5 @@
<arg value="-Acontextspecific"/>
<fileset dir="${lwjgl.src.templates}" includes="${opengl-template-pattern}"/>
</apply>
</target>
</target>
</project>

View File

@ -59,7 +59,7 @@ public final class AMDDebugOutputCallback implements PointerWrapper {
private final long pointer;
/**
* Creates a AMDDebugOutputCallback with a default callback handler.
* Creates an AMDDebugOutputCallback with a default callback handler.
* The default handler will simply print the message on System.err.
*/
public AMDDebugOutputCallback() {
@ -120,7 +120,7 @@ public final class AMDDebugOutputCallback implements PointerWrapper {
}
/**
* Creates a AMDDebugOutputCallback with the specified callback handlers.
* Creates an AMDDebugOutputCallback with the specified callback handlers.
* The handler's {@code handleMessage} method will be called whenever
* debug output is generated by the GL.
*

View File

@ -28,7 +28,7 @@ final class AMDDebugOutputUtil {
if ( !ctx.getContextAttribs().isDebug() )
throw new IllegalStateException("The current context is not a debug context.");
if ( !GLContext.getCapabilities().GL_AMD_debug_output )
if ( !GLContext.getCapabilities().GL_AMD_debug_output )
throw new IllegalStateException("AMD_debug_output is not supported.");
handlers.put(ctx, handler);

View File

@ -0,0 +1,190 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
/**
* Instances of this class are needed to use the callback functionality of the ARB_debug_output extension.
* A debug context must be current before creating instances of this class. Users of this class may provide
* implementations of the {@code Handler} interface to receive notifications. The same {@code Handler}
* instance may be used by different contexts but it is not recommended. Handler notifications are synchronized.
*
* @author Spasi
*/
public final class ARBDebugOutputCallback implements PointerWrapper {
/** Severity levels. */
private static final int
GL_DEBUG_SEVERITY_HIGH_ARB = 0x9146,
GL_DEBUG_SEVERITY_MEDIUM_ARB = 0x9147,
GL_DEBUG_SEVERITY_LOW_ARB = 0x9148;
/** Sources. */
private static final int
GL_DEBUG_SOURCE_API_ARB = 0x8246,
GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x8247,
GL_DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x8248,
GL_DEBUG_SOURCE_THIRD_PARTY_ARB = 0x8249,
GL_DEBUG_SOURCE_APPLICATION_ARB = 0x824A,
GL_DEBUG_SOURCE_OTHER_ARB = 0x824B;
/** Types. */
private static final int
GL_DEBUG_TYPE_ERROR_ARB = 0x824C,
GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x824D,
GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x824E,
GL_DEBUG_TYPE_PORTABILITY_ARB = 0x824F,
GL_DEBUG_TYPE_PERFORMANCE_ARB = 0x8250,
GL_DEBUG_TYPE_OTHER_ARB = 0x8251;
private final long pointer;
/**
* Creates an ARBDebugOutputCallback with a default callback handler.
* The default handler will simply print the message on System.err.
*/
public ARBDebugOutputCallback() {
this(new Handler() {
public void handleMessage(final int source, final int type, final int id, final int severity, final String message) {
System.err.println("[LWJGL] ARB_debug_output message");
System.err.println("\tID: " + id);
String description;
switch ( source ) {
case GL_DEBUG_SOURCE_API_ARB:
description = "API";
break;
case GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB:
description = "WINDOW SYSTEM";
break;
case GL_DEBUG_SOURCE_SHADER_COMPILER_ARB:
description = "SHADER COMPILER";
break;
case GL_DEBUG_SOURCE_THIRD_PARTY_ARB:
description = "THIRD PARTY";
break;
case GL_DEBUG_SOURCE_APPLICATION_ARB:
description = "APPLICATION";
break;
case GL_DEBUG_SOURCE_OTHER_ARB:
description = "OTHER";
break;
default:
description = "Unknown (" + Integer.toHexString(source) + ")";
}
System.err.println("\tSource: " + description);
switch ( type ) {
case GL_DEBUG_TYPE_ERROR_ARB:
description = "ERROR";
break;
case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB:
description = "DEPRECATED BEHAVIOR";
break;
case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB:
description = "UNDEFINED BEHAVIOR";
break;
case GL_DEBUG_TYPE_PORTABILITY_ARB:
description = "PORTABILITY";
break;
case GL_DEBUG_TYPE_PERFORMANCE_ARB:
description = "PERFORMANCE";
break;
case GL_DEBUG_TYPE_OTHER_ARB:
description = "OTHER";
break;
default:
description = "Unknown (" + Integer.toHexString(source) + ")";
}
System.err.println("\tType: " + description);
switch ( severity ) {
case GL_DEBUG_SEVERITY_HIGH_ARB:
description = "HIGH";
break;
case GL_DEBUG_SEVERITY_MEDIUM_ARB:
description = "MEDIUM";
break;
case GL_DEBUG_SEVERITY_LOW_ARB:
description = "LOW";
break;
default:
description = "Unknown (" + Integer.toHexString(source) + ")";
}
System.err.println("\tSeverity: " + description);
System.err.println("\tMessage: " + message);
}
});
}
/**
* Creates an ARBDebugOutputCallback with the specified callback handlers.
* The handler's {@code handleMessage} method will be called whenever
* debug output is generated by the GL.
*
* @param handler the callback handler
*/
public ARBDebugOutputCallback(final Handler handler) {
try {
// We have to call registerHandler reflectively because we need this class to compile before we run the Generator.
// The registerHandler method depends on org.lwjgl.opengl.Context, if we touched that we would need to compile
// the whole library (which is not possible).
Class.forName("org.lwjgl.opengl.ARBDebugOutputUtil").getMethod("registerHandler", new Class[] { Handler.class }).invoke(null, new Object[] { handler });
} catch (Exception e) {
throw new RuntimeException(e.getCause() != null ? e.getCause() : e);
}
this.pointer = getFunctionPointer();
}
public long getPointer() {
return pointer;
}
private static native long getFunctionPointer();
/** Implementations of this interface can be used to receive ARB_debug_output notifications. */
public interface Handler {
/**
* This method will be called when an AMD_debug_output message is generated.
*
* @param id the message ID
* @param source the message source
* @param type the message type
* @param severity the message severity
* @param message the string representation of the message.
*/
void handleMessage(int source, int type, int id, int severity, String message);
}
}

View File

@ -0,0 +1,60 @@
package org.lwjgl.opengl;
import org.lwjgl.opengl.ARBDebugOutputCallback.Handler;
import java.nio.ByteBuffer;
import java.util.Map;
import java.util.WeakHashMap;
/**
* This class handles ARBDebugOutputCallback.Handler registration and notification.
* We could have put this in ARBDebugOutputCallback, but we need to compile it for
* the generator. Registration is done reflectively in the ARBDebugOutputCallback
* constructor.
*
* @author Spasi
*/
final class ARBDebugOutputUtil {
private static final Map handlers = new WeakHashMap();
private ARBDebugOutputUtil() {}
public static void registerHandler(final Handler handler) {
final Context ctx = Context.getCurrentContext();
if ( ctx == null )
throw new IllegalStateException("No context is current.");
if ( !ctx.getContextAttribs().isDebug() )
throw new IllegalStateException("The current context is not a debug context.");
if ( !GLContext.getCapabilities().GL_ARB_debug_output )
throw new IllegalStateException("ARB_debug_output is not supported.");
handlers.put(ctx, handler);
}
/**
* This method is called by native code. If finds the callback handler associated
* with the current Thread and calls its {@code handleMessage} method.
*
* @param source the message source
* @param type the message type
* @param id the message ID
* @param severity the message severity
* @param message the string representation of the message.
* @param userParam the user-specified data specified in glDebugMessageCallbackAMD. For the current implementation this is always null and we ignore it.
*/
private static void messageCallback(final int source, final int type, final int id, final int severity, final String message, final ByteBuffer userParam) {
synchronized ( GlobalLock.lock ) {
final Context ctx = Context.getCurrentContext();
if ( ctx == null )
return;
final Handler handler = (Handler)handlers.get(ctx);
if ( handler != null )
handler.handleMessage(source, type, id, severity, message);
}
}
}

View File

@ -56,6 +56,13 @@ import java.nio.IntBuffer;
*/
public final class ContextAttribs {
// Same values for GLX & WGL
private static final int CONTEXT_ROBUST_ACCESS_BIT_ARB = 0x00000004;
private static final int CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256;
private static final int
NO_RESET_NOTIFICATION_ARB = 0x8261,
LOSE_CONTEXT_ON_RESET_ARB = 0x8252;
private int majorVersion;
private int minorVersion;
@ -63,10 +70,13 @@ public final class ContextAttribs {
private boolean debug;
private boolean forwardCompatible;
private boolean robustAccess;
private boolean profileCore;
private boolean profileCompatibility;
private boolean loseContextOnReset;
public ContextAttribs() {
this(1, 0);
}
@ -82,14 +92,6 @@ public final class ContextAttribs {
this.majorVersion = majorVersion;
this.minorVersion = minorVersion;
this.layerPlane = 0;
this.debug = false;
this.forwardCompatible = false;
this.profileCore = false;
this.profileCompatibility = false;
}
private ContextAttribs(final ContextAttribs attribs) {
@ -100,9 +102,12 @@ public final class ContextAttribs {
this.debug = attribs.debug;
this.forwardCompatible = attribs.forwardCompatible;
this.robustAccess = attribs.robustAccess;
this.profileCore = attribs.profileCore;
this.profileCompatibility = attribs.profileCompatibility;
this.loseContextOnReset = attribs.loseContextOnReset;
}
public int getMajorVersion() {
@ -193,6 +198,24 @@ public final class ContextAttribs {
return attribs;
}
/**
* Returns a ContextAttribs instance with CONTEXT_RESET_NOTIFICATION_STRATEGY set
* to LOSE_CONTEXT_ON_RESET if the parameter is true or to NO_RESET_NOTIFICATION
* if the parameter is false.
*
* @param loseContextOnReset
*
* @return the new ContextAttribs
*/
public ContextAttribs withLoseContextOnReset(final boolean loseContextOnReset) {
if ( loseContextOnReset == this.loseContextOnReset )
return this;
final ContextAttribs attribs = new ContextAttribs(this);
attribs.loseContextOnReset = loseContextOnReset;
return attribs;
}
private static ContextAttribsImplementation getImplementation() {
switch ( LWJGLUtil.getPlatform() ) {
case LWJGLUtil.PLATFORM_LINUX:
@ -221,6 +244,8 @@ public final class ContextAttribs {
flags |= implementation.getDebugBit();
if ( forwardCompatible )
flags |= implementation.getForwardCompatibleBit();
if ( robustAccess )
flags |= CONTEXT_ROBUST_ACCESS_BIT_ARB;
if ( 0 < flags )
attribCount++;
@ -247,6 +272,8 @@ public final class ContextAttribs {
attribs.put(implementation.getFlagsAttrib()).put(flags);
if ( 0 < profileMask )
attribs.put(implementation.getProfileMaskAttrib()).put(profileMask);
if ( loseContextOnReset )
attribs.put(CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB).put(LOSE_CONTEXT_ON_RESET_ARB);
attribs.put(0);
attribs.rewind();
@ -261,6 +288,9 @@ public final class ContextAttribs {
sb.append(" - Layer=").append(layerPlane);
sb.append(" - Debug=").append(debug);
sb.append(" - ForwardCompatible=").append(forwardCompatible);
sb.append(" - RobustAccess=").append(robustAccess);
if ( robustAccess )
sb.append(" (").append(loseContextOnReset ? "LOSE_CONTEXT_ON_RESET" : "NO_RESET_NOTIFICATION");
sb.append(" - Profile=");
if ( profileCore )
sb.append("Core");

View File

@ -215,37 +215,21 @@ public final class GLContext {
LWJGLUtil.log("The major and/or minor OpenGL version is malformed: " + e.getMessage());
}
// ----------------------[ 4.X ]----------------------
if ( 4 <= majorVersion )
supported_extensions.add("OpenGL40");
final int[][] GL_VERSIONS = {
{ 1, 2, 3, 4, 5 }, // OpenGL 1
{ 0, 1 }, // OpenGL 2
{ 0, 1, 2, 3 }, // OpenGL 3
{ 0, 1 }, // OpenGL 4
};
// ----------------------[ 3.X ]----------------------
if ( 3 < majorVersion || (3 == majorVersion && 3 <= minorVersion) )
supported_extensions.add("OpenGL33");
if ( 3 < majorVersion || (3 == majorVersion && 2 <= minorVersion) )
supported_extensions.add("OpenGL32");
if ( 3 < majorVersion || (3 == majorVersion && 1 <= minorVersion) )
supported_extensions.add("OpenGL31");
if ( 3 <= majorVersion )
supported_extensions.add("OpenGL30");
// ----------------------[ 2.X ]----------------------
if ( 2 < majorVersion || (2 == majorVersion && 1 <= minorVersion) )
supported_extensions.add("OpenGL21");
if ( 2 <= majorVersion )
supported_extensions.add("OpenGL20");
// ----------------------[ 1.X ]----------------------
if ( 1 < majorVersion || 5 <= minorVersion )
supported_extensions.add("OpenGL15");
if ( 1 < majorVersion || 4 <= minorVersion )
supported_extensions.add("OpenGL14");
if ( 1 < majorVersion || 3 <= minorVersion )
supported_extensions.add("OpenGL13");
if ( 1 < majorVersion || 2 <= minorVersion )
supported_extensions.add("OpenGL12");
if ( 1 < majorVersion || 1 <= minorVersion )
supported_extensions.add("OpenGL11");
for ( int major = 1; major <= GL_VERSIONS.length; major++ ) {
int[] minors = GL_VERSIONS[major - 1];
for ( int i = 0; i < minors.length; i++ ) {
int minor = minors[i];
if ( major < majorVersion || (major == majorVersion && minor <= minorVersion) )
supported_extensions.add("OpenGL" + Integer.toString(major) + Integer.toString(minor));
}
}
int profileMask = 0;

View File

@ -133,9 +133,9 @@ public class GLTypeMap implements TypeMap {
return "s";
else if ( annotation_type.equals(GLubyte.class) || annotation_type.equals(GLbyte.class) )
return "b";
else if ( annotation_type.equals(GLfloat.class) )
else if ( annotation_type.equals(GLfloat.class) || annotation_type.equals(GLclampf.class) )
return "f";
else if ( annotation_type.equals(GLdouble.class) )
else if ( annotation_type.equals(GLdouble.class) || annotation_type.equals(GLclampd.class) )
return "d";
else if ( annotation_type.equals(GLhalf.class) )
return "h";

View File

@ -136,6 +136,9 @@ typedef struct __GLsync *GLsync;
/* AMD_debug_output callback function pointer. */
typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam);
/* ARB_debug_output callback function pointer. */
typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam);
/* helper stuff */
/* initializes everything, call this right after the rc is created. the function returns true if successful */

View File

@ -41,7 +41,11 @@
#include "extgl.h"
#include "org_lwjgl_opengl_AMDDebugOutputCallback.h"
static void APIENTRY debugOutputCallback(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam) {
static jclass debugOutputCallbackClassAMD;
static jmethodID debugOutputCallbackMethodAMD;
static void APIENTRY debugOutputCallbackAMD(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam) {
/*
jclass callback_class;
jmethodID callback_method;
JNIEnv *env = getThreadEnv();
@ -60,8 +64,25 @@ static void APIENTRY debugOutputCallback(GLuint id, GLenum category, GLenum seve
}
}
}
*/
JNIEnv *env = getThreadEnv();
if ( env != NULL && !(*env)->ExceptionOccurred(env) && debugOutputCallbackMethodAMD != NULL ) {
(*env)->CallStaticVoidMethod(env, debugOutputCallbackClassAMD, debugOutputCallbackMethodAMD,
(jint)id,
(jint)category,
(jint)severity,
NewStringNativeWithLength(env, message, length),
NULL // Ignoring user param, pointless for our implementation
);
}
}
JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_AMDDebugOutputCallback_getFunctionPointer(JNIEnv *env, jclass clazz) {
return (jlong)(intptr_t)&debugOutputCallback;
// Cache the callback class and methodID
debugOutputCallbackClassAMD = (*env)->FindClass(env, "org/lwjgl/opengl/AMDDebugOutputUtil");
if ( debugOutputCallbackClassAMD != NULL )
debugOutputCallbackMethodAMD = (*env)->GetStaticMethodID(env, debugOutputCallbackClassAMD, "messageCallback", "(IIILjava/lang/String;Ljava/nio/ByteBuffer;)V");
return (jlong)(intptr_t)&debugOutputCallbackAMD;
}

View File

@ -0,0 +1,68 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* JNI implementation of the AMD_debug_output function callback.
*
* @author Spasi
*/
#include <jni.h>
#include "common_tools.h"
#include "extgl.h"
#include "org_lwjgl_opengl_ARBDebugOutputCallback.h"
static jclass debugOutputCallbackClassARB;
static jmethodID debugOutputCallbackMethodARB;
static void APIENTRY debugOutputCallbackARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam) {
JNIEnv *env = getThreadEnv();
if ( env != NULL && !(*env)->ExceptionOccurred(env) && debugOutputCallbackMethodARB != NULL ) {
(*env)->CallStaticVoidMethod(env, debugOutputCallbackClassARB, debugOutputCallbackMethodARB,
(jint)source,
(jint)type,
(jint)id,
(jint)severity,
NewStringNativeWithLength(env, message, length),
NULL // Ignoring user param, pointless for our implementation
);
}
}
JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_ARBDebugOutputCallback_getFunctionPointer(JNIEnv *env, jclass clazz) {
// Cache the callback class and methodID
debugOutputCallbackClassARB = (*env)->FindClass(env, "org/lwjgl/opengl/ARBDebugOutputUtil");
if ( debugOutputCallbackClassARB != NULL )
debugOutputCallbackMethodARB = (*env)->GetStaticMethodID(env, debugOutputCallbackClassARB, "messageCallback", "(IIIILjava/lang/String;Ljava/nio/ByteBuffer;)V");
return (jlong)(intptr_t)&debugOutputCallbackARB;
}

View File

@ -0,0 +1,80 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
import org.lwjgl.util.generator.*;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
public interface ARB_ES2_compatibility {
/**
* Accepted by the &lt;value&gt; parameter of GetBooleanv, GetIntegerv,
* GetInteger64v, GetFloatv, and GetDoublev:
*/
int GL_SHADER_COMPILER = 0x8DFA,
GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9,
GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB,
GL_MAX_VARYING_VECTORS = 0x8DFC,
GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD,
GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A,
GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B;
/** Accepted by the &lt;type&gt; parameter of VertexAttribPointer: */
int GL_FIXED = 0x140C;
/**
* Accepted by the &lt;precisiontype&gt; parameter of
* GetShaderPrecisionFormat:
*/
int GL_LOW_FLOAT = 0x8DF0,
GL_MEDIUM_FLOAT = 0x8DF1,
GL_HIGH_FLOAT = 0x8DF2,
GL_LOW_INT = 0x8DF3,
GL_MEDIUM_INT = 0x8DF4,
GL_HIGH_INT = 0x8DF5;
void glReleaseShaderCompiler();
void glShaderBinary(@AutoSize("shaders") @GLsizei int count, @Const @GLuint IntBuffer shaders,
@GLenum int binaryformat, @Const @GLvoid ByteBuffer binary, @AutoSize("binary") @GLsizei int length);
void glGetShaderPrecisionFormat(@GLenum int shadertype, @GLenum int precisiontype,
@OutParameter @Check("2") IntBuffer range,
@OutParameter @Check("1") IntBuffer precision);
void glDepthRangef(@GLclampf float n, @GLclampf float f);
void glClearDepthf(@GLclampf float d);
}

View File

@ -0,0 +1,121 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
import org.lwjgl.util.generator.*;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
public interface ARB_debug_output {
/**
* Tokens accepted by the &lt;target&gt; parameters of Enable, Disable,
* and IsEnabled:
*/
int GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB = 0x8242;
/**
* Tokens accepted by the &lt;value&gt; parameters of GetBooleanv,
* GetIntegerv, GetFloatv, and GetDoublev:
*/
int GL_MAX_DEBUG_MESSAGE_LENGTH_ARB = 0x9143,
GL_MAX_DEBUG_LOGGED_MESSAGES_ARB = 0x9144,
GL_DEBUG_LOGGED_MESSAGES_ARB = 0x9145,
GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = 0x8243;
/** Tokens accepted by the &lt;pname&gt; parameter of GetPointerv: */
int GL_DEBUG_CALLBACK_FUNCTION_ARB = 0x8244,
GL_DEBUG_CALLBACK_USER_PARAM_ARB = 0x8245;
/**
* Tokens accepted or provided by the &lt;source&gt; parameters of
* DebugMessageControlARB, DebugMessageInsertARB and DEBUGPROCARB,
* and the &lt;sources&gt; parameter of GetDebugMessageLogARB:
*/
int GL_DEBUG_SOURCE_API_ARB = 0x8246,
GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x8247,
GL_DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x8248,
GL_DEBUG_SOURCE_THIRD_PARTY_ARB = 0x8249,
GL_DEBUG_SOURCE_APPLICATION_ARB = 0x824A,
GL_DEBUG_SOURCE_OTHER_ARB = 0x824B;
/**
* Tokens accepted or provided by the &lt;type&gt; parameters of
* DebugMessageControlARB, DebugMessageInsertARB and DEBUGPROCARB,
* and the &lt;types&gt; parameter of GetDebugMessageLogARB:
*/
int GL_DEBUG_TYPE_ERROR_ARB = 0x824C,
GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x824D,
GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x824E,
GL_DEBUG_TYPE_PORTABILITY_ARB = 0x824F,
GL_DEBUG_TYPE_PERFORMANCE_ARB = 0x8250,
GL_DEBUG_TYPE_OTHER_ARB = 0x8251;
/**
* Tokens accepted or provided by the &lt;severity&gt; parameters of
* DebugMessageControlARB, DebugMessageInsertARB and DEBUGPROCARB
* callback functions, and the &lt;severities&gt; parameter of
* GetDebugMessageLogARB:
*/
int GL_DEBUG_SEVERITY_HIGH_ARB = 0x9146,
GL_DEBUG_SEVERITY_MEDIUM_ARB = 0x9147,
GL_DEBUG_SEVERITY_LOW_ARB = 0x9148;
void glDebugMessageControlARB(@GLenum int source,
@GLenum int type,
@GLenum int severity,
@AutoSize(value = "ids", canBeNull = true) @GLsizei int count,
@Check(canBeNull = true) @Const @GLuint IntBuffer ids,
boolean enabled);
void glDebugMessageInsertARB(@GLenum int source, @GLenum int type, @GLuint int id, @GLenum int severity, @AutoSize("buf") @GLsizei int length, @Const @GLchar ByteBuffer buf);
@Alternate("glDebugMessageInsertARB")
void glDebugMessageInsertARB(@GLenum int source, @GLenum int type, @GLuint int id, @GLenum int severity, @Constant("buf.length()") @GLsizei int length, CharSequence buf);
void glDebugMessageCallbackARB(@GLpointer(value = "GLDEBUGPROCARB", canBeNull = true) ARBDebugOutputCallback callback, @Check(canBeNull = true) @GLvoid ByteBuffer userParam);
@GLuint
int glGetDebugMessageLogARB(@GLuint int count,
@AutoSize(value = "messageLog", canBeNull = true) @GLsizei int logSize,
@Check(value = "count", canBeNull = true) @GLenum IntBuffer sources,
@Check(value = "count", canBeNull = true) @GLenum IntBuffer types,
@Check(value = "count", canBeNull = true) @GLuint IntBuffer ids,
@Check(value = "count", canBeNull = true) @GLenum IntBuffer severities,
@Check(value = "count", canBeNull = true) @GLsizei IntBuffer lengths,
@Check(canBeNull = true) @OutParameter @GLchar ByteBuffer messageLog);
// Not really useful and a pain to implement in Java
//void glGetPointerv(@GLenum int pname, void**params);
}

View File

@ -0,0 +1,66 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
import org.lwjgl.util.generator.*;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
public interface ARB_get_program_binary {
/**
* Accepted by the &lt;pname&gt; parameter of ProgramParameteri and
* GetProgramiv:
*/
int GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257;
/** Accepted by the &lt;pname&gt; parameter of GetProgramiv: */
int GL_PROGRAM_BINARY_LENGTH = 0x8741;
/**
* Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetIntegerv,
* GetInteger64v, GetFloatv and GetDoublev:
*/
int GL_NUM_PROGRAM_BINARY_FORMATS = 0x87FE,
GL_PROGRAM_BINARY_FORMATS = 0x87FF;
void glGetProgramBinary(@GLuint int program, @AutoSize("binary") @GLsizei int bufSize,
@Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
@Check("1") @GLenum IntBuffer binaryFormat,
@OutParameter @GLvoid ByteBuffer binary);
void glProgramBinary(@GLuint int program, @GLenum int binaryFormat, @Const @GLvoid ByteBuffer binary, @AutoSize("binary") @GLsizei int length);
void glProgramParameteri(@GLuint int program, @GLenum int pname, int value);
}

View File

@ -0,0 +1,190 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
import org.lwjgl.util.generator.*;
import java.nio.*;
@Dependent
@DeprecatedGL
public interface ARB_robustness {
/** Returned by GetGraphicsResetStatusARB: */
int GL_NO_ERROR = 0x0000,
GL_GUILTY_CONTEXT_RESET_ARB = 0x8253,
GL_INNOCENT_CONTEXT_RESET_ARB = 0x8254,
GL_UNKNOWN_CONTEXT_RESET_ARB = 0x8255;
/**
* Accepted by the &lt;value&gt; parameter of GetBooleanv, GetIntegerv,
* GetInteger64v, GetFloatv, and GetDoublev:
*/
int GL_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256;
/**
* Returned by GetIntegerv and related simple queries when
* &lt;value&gt; is RESET_NOTIFICATION_STRATEGY_ARB:
*/
int GL_LOSE_CONTEXT_ON_RESET_ARB = 0x8252,
GL_NO_RESET_NOTIFICATION_ARB = 0x8261;
/** Returned by GetIntegerv when &lt;pname&gt; is CONTEXT_FLAGS: */
int GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB = 0x00000004;
@GLenum
int glGetGraphicsResetStatusARB();
@DeprecatedGL
void glGetnMapdvARB(@GLenum int target, @GLenum int query, @Constant("v.remaining() << 3") @GLsizei int bufSize, @OutParameter @Check DoubleBuffer v);
@DeprecatedGL
void glGetnMapfvARB(@GLenum int target, @GLenum int query, @Constant("v.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check FloatBuffer v);
@DeprecatedGL
void glGetnMapivARB(@GLenum int target, @GLenum int query, @Constant("v.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check IntBuffer v);
@DeprecatedGL
void glGetnPixelMapfvARB(@GLenum int map, @Constant("values.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check FloatBuffer values);
@DeprecatedGL
void glGetnPixelMapuivARB(@GLenum int map, @Constant("values.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check @GLuint IntBuffer values);
@DeprecatedGL
void glGetnPixelMapusvARB(@GLenum int map, @Constant("values.remaining() << 1") @GLsizei int bufSize, @OutParameter @Check @GLushort ShortBuffer values);
@DeprecatedGL
void glGetnPolygonStippleARB(@AutoSize("pattern") @GLsizei int bufSize, @OutParameter @GLubyte ByteBuffer pattern);
void glGetnTexImageARB(@GLenum int target, int level, @GLenum int format, @GLenum int type, @AutoSize("img") @GLsizei int bufSize,
@OutParameter
@BufferObject(BufferKind.PackPBO)
@GLbyte
@GLshort
@GLint
@GLfloat
@GLdouble Buffer img);
void glReadnPixelsARB(int x, int y, @GLsizei int width, @GLsizei int height,
@GLenum int format, @GLenum int type, @AutoSize("data") @GLsizei int bufSize,
@OutParameter
@BufferObject(BufferKind.PackPBO)
@GLbyte
@GLshort
@GLint
@GLfloat
@GLdouble Buffer data);
@Dependent("GL_ARB_imaging")
void glGetnColorTableARB(@GLenum int target, @GLenum int format, @GLenum int type, @AutoSize("table") @GLsizei int bufSize,
@OutParameter
@GLbyte
@GLfloat
@GLdouble Buffer table);
@Dependent("GL_ARB_imaging")
void glGetnConvolutionFilterARB(@GLenum int target, @GLenum int format, @GLenum int type, @AutoSize("image") @GLsizei int bufSize,
@OutParameter
@BufferObject(BufferKind.PackPBO)
@GLbyte
@GLshort
@GLint
@GLfloat
@GLdouble Buffer image);
@Dependent("GL_ARB_imaging")
void glGetnSeparableFilterARB(@GLenum int target, @GLenum int format, @GLenum int type,
@AutoSize("row") @GLsizei int rowBufSize,
@OutParameter
@BufferObject(BufferKind.PackPBO)
@GLbyte
@GLshort
@GLint
@GLfloat
@GLdouble Buffer row,
@AutoSize("column") @GLsizei int columnBufSize,
@OutParameter
@BufferObject(BufferKind.PackPBO)
@GLbyte
@GLshort
@GLint
@GLfloat
@GLdouble Buffer column,
@OutParameter
@BufferObject(BufferKind.PackPBO)
@Check
@GLbyte
@GLshort
@GLint
@GLfloat
@GLdouble Buffer span);
@Dependent("GL_ARB_imaging")
void glGetnHistogramARB(@GLenum int target, boolean reset, @GLenum int format, @GLenum int type, @AutoSize("values") @GLsizei int bufSize,
@OutParameter
@BufferObject(BufferKind.PackPBO)
@GLbyte
@GLshort
@GLint
@GLfloat
@GLdouble Buffer values);
@Dependent("GL_ARB_imaging")
void glGetnMinmaxARB(@GLenum int target, boolean reset, @GLenum int format, @GLenum int type, @AutoSize("values") @GLsizei int bufSize,
@OutParameter
@BufferObject(BufferKind.PackPBO)
@GLbyte
@GLshort
@GLint
@GLfloat
@GLdouble Buffer values);
@Dependent("OpenGL13")
void glGetnCompressedTexImageARB(@GLenum int target, int lod, @AutoSize("img") @GLsizei int bufSize,
@OutParameter
@BufferObject(BufferKind.PackPBO)
@GLbyte
@GLshort
@GLint Buffer img);
@Dependent("OpenGL20")
void glGetnUniformfvARB(@GLuint int program, int location, @Constant("params.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check FloatBuffer params);
@Dependent("OpenGL20")
void glGetnUniformivARB(@GLuint int program, int location, @Constant("params.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check IntBuffer params);
@Dependent("OpenGL20")
void glGetnUniformuivARB(@GLuint int program, int location, @Constant("params.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check @GLuint IntBuffer params);
@Dependent("OpenGL20")
void glGetnUniformdvARB(@GLuint int program, int location, @Constant("params.remaining() << 3") @GLsizei int bufSize, @OutParameter @Check DoubleBuffer params);
}

View File

@ -0,0 +1,269 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
import org.lwjgl.util.generator.*;
import java.nio.ByteBuffer;
import java.nio.DoubleBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
@Extension(postfix = "")
public interface ARB_separate_shader_objects {
/** Accepted by &lt;stages&gt; parameter to UseProgramStages: */
int GL_VERTEX_SHADER_BIT = 0x00000001,
GL_FRAGMENT_SHADER_BIT = 0x00000002,
GL_GEOMETRY_SHADER_BIT = 0x00000004,
GL_TESS_CONTROL_SHADER_BIT = 0x00000008,
GL_TESS_EVALUATION_SHADER_BIT = 0x00000010,
GL_ALL_SHADER_BITS = 0xFFFFFFFF;
/**
* Accepted by the &lt;pname&gt; parameter of ProgramParameteri and
* GetProgramiv:
*/
int GL_PROGRAM_SEPARABLE = 0x8258;
/** Accepted by &lt;type&gt; parameter to GetProgramPipelineiv: */
int GL_ACTIVE_PROGRAM = 0x8259;
/**
* Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetIntegerv,
* GetInteger64v, GetFloatv, and GetDoublev:
*/
int GL_PROGRAM_PIPELINE_BINDING = 0x825A;
void glUseProgramStages(@GLuint int pipeline, @GLbitfield int stages, @GLuint int program);
void glActiveShaderProgram(@GLuint int pipeline, @GLuint int program);
@StripPostfix(value = "strings", postfix = "v")
@GLuint
int glCreateShaderProgramv(@GLenum int type, @GLsizei int count, @Check @Const @Indirect @GLchar ByteBuffer strings);
@Alternate("glCreateShaderProgramv")
@StripPostfix(value = "string", postfix = "v")
@GLuint
int glCreateShaderProgramv(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated CharSequence string);
@Alternate("glCreateShaderProgramv")
@StripPostfix(value = "strings", postfix = "v")
@GLuint
int glCreateShaderProgramv(@GLenum int type, @Constant("strings.length") @GLsizei int count,
@Const @NullTerminated @StringList(value = "count") CharSequence[] strings);
void glBindProgramPipeline(@GLuint int pipeline);
void glDeleteProgramPipelines(@AutoSize("pipelines") @GLsizei int n, @Const @GLuint IntBuffer pipelines);
@Alternate("glDeleteProgramPipelines")
void glDeleteProgramPipelines(@Constant("1") @GLsizei int n, @Constant(value = "APIUtils.getBufferInt().put(0, pipeline), 0", keepParam = true) int pipeline);
void glGenProgramPipelines(@AutoSize("pipelines") @GLsizei int n, @OutParameter @GLuint IntBuffer pipelines);
@Alternate("glGenProgramPipelines")
@GLreturn("pipelines")
void glGenProgramPipelines2(@Constant("1") @GLsizei int n, @OutParameter @GLuint IntBuffer pipelines);
boolean glIsProgramPipeline(@GLuint int pipeline);
void glProgramParameteri(@GLuint int program, @GLenum int pname, int value);
@StripPostfix("params")
void glGetProgramPipelineiv(@GLuint int pipeline, @GLenum int pname, @OutParameter @Check("1") IntBuffer params);
@Alternate("glGetProgramPipelineiv")
@GLreturn("params")
@StripPostfix("params")
void glGetProgramPipelineiv2(@GLuint int pipeline, @GLenum int pname, @OutParameter IntBuffer params);
void glProgramUniform1i(@GLuint int program, int location, int v0);
void glProgramUniform2i(@GLuint int program, int location, int v0, int v1);
void glProgramUniform3i(@GLuint int program, int location, int v0, int v1, int v2);
void glProgramUniform4i(@GLuint int program, int location, int v0, int v1, int v2, int v3);
void glProgramUniform1f(@GLuint int program, int location, float v0);
void glProgramUniform2f(@GLuint int program, int location, float v0, float v1);
void glProgramUniform3f(@GLuint int program, int location, float v0, float v1, float v2);
void glProgramUniform4f(@GLuint int program, int location, float v0, float v1, float v2, float v3);
void glProgramUniform1d(@GLuint int program, int location, double v0);
void glProgramUniform2d(@GLuint int program, int location, double v0, double v1);
void glProgramUniform3d(@GLuint int program, int location, double v0, double v1, double v2);
void glProgramUniform4d(@GLuint int program, int location, double v0, double v1, double v2, double v3);
@StripPostfix("value")
void glProgramUniform1iv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform2iv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform3iv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform4iv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform1fv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniform2fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniform3fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniform4fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniform1dv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniform2dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniform3dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniform4dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const DoubleBuffer value);
void glProgramUniform1ui(@GLuint int program, int location, int v0);
void glProgramUniform2ui(@GLuint int program, int location, int v0, int v1);
void glProgramUniform3ui(@GLuint int program, int location, int v0, int v1, int v2);
void glProgramUniform4ui(@GLuint int program, int location, int v0, int v1, int v2, int v3);
@StripPostfix("value")
void glProgramUniform1uiv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform2uiv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform3uiv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform4uiv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / (3 * 3)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 4") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / (3 * 3)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 4") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2x3fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (2 * 3)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3x2fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (3 * 2)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2x4fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4x2fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3x4fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (3 * 4)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4x3fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (4 * 3)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2x3dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (2 * 3)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3x2dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (3 * 2)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2x4dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4x2dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3x4dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (3 * 4)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4x3dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (4 * 3)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
void glValidateProgramPipeline(@GLuint int pipeline);
void glGetProgramPipelineInfoLog(@GLuint int pipeline, @AutoSize("infoLog") @GLsizei int bufSize,
@OutParameter @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
@OutParameter @GLchar ByteBuffer infoLog);
@Alternate("glGetProgramPipelineInfoLog")
@GLreturn(value = "infoLog", maxLength = "bufSize")
void glGetProgramPipelineInfoLog2(@GLuint int pipeline, @GLsizei int bufSize,
@OutParameter @GLsizei @Constant("infoLog_length, 0") IntBuffer length,
@OutParameter @GLchar ByteBuffer infoLog);
}

View File

@ -0,0 +1,35 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
public interface ARB_shader_precision {
}

View File

@ -0,0 +1,35 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
public interface ARB_shader_stencil_export {
}

View File

@ -0,0 +1,88 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
import org.lwjgl.util.generator.*;
import java.nio.Buffer;
import java.nio.DoubleBuffer;
@Dependent
@Extension(postfix = "")
public interface ARB_vertex_attrib_64bit {
/** Returned in the &lt;type&gt; parameter of GetActiveAttrib: */
int GL_DOUBLE_VEC2 = 0x8FFC;
int GL_DOUBLE_VEC3 = 0x8FFD;
int GL_DOUBLE_VEC4 = 0x8FFE;
int GL_DOUBLE_MAT2 = 0x8F46;
int GL_DOUBLE_MAT3 = 0x8F47;
int GL_DOUBLE_MAT4 = 0x8F48;
int GL_DOUBLE_MAT2x3 = 0x8F49;
int GL_DOUBLE_MAT2x4 = 0x8F4A;
int GL_DOUBLE_MAT3x2 = 0x8F4B;
int GL_DOUBLE_MAT3x4 = 0x8F4C;
int GL_DOUBLE_MAT4x2 = 0x8F4D;
int GL_DOUBLE_MAT4x3 = 0x8F4E;
void glVertexAttribL1d(@GLuint int index, double x);
void glVertexAttribL2d(@GLuint int index, double x, double y);
void glVertexAttribL3d(@GLuint int index, double x, double y, double z);
void glVertexAttribL4d(@GLuint int index, double x, double y, double z, double w);
@StripPostfix("v")
void glVertexAttribL1dv(@GLuint int index, @Const @Check("1") DoubleBuffer v);
@StripPostfix("v")
void glVertexAttribL2dv(@GLuint int index, @Const @Check("2") DoubleBuffer v);
@StripPostfix("v")
void glVertexAttribL3dv(@GLuint int index, @Const @Check("3") DoubleBuffer v);
@StripPostfix("v")
void glVertexAttribL4dv(@GLuint int index, @Const @Check("4") DoubleBuffer v);
void glVertexAttribLPointer(@GLuint int index, int size, @Constant("GL11.GL_DOUBLE") @GLenum int type, @GLsizei int stride,
@CachedReference(index = "index", name = "glVertexAttribPointer_buffer")
@BufferObject(BufferKind.ArrayVBO)
@Check @Const @GLdouble Buffer pointer);
@StripPostfix("params")
void glGetVertexAttribLdv(@GLuint int index, @GLenum int pname, @OutParameter @Check("4") DoubleBuffer params);
@Dependent("EXT_direct_state_access")
void glVertexArrayVertexAttribLOffsetEXT(@GLuint int vaobj, @GLuint int buffer, @GLuint int index, int size, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
}

View File

@ -0,0 +1,125 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
import org.lwjgl.util.generator.*;
import java.nio.DoubleBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;
@Extension(postfix = "")
public interface ARB_viewport_array {
/**
* Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetIntegerv, GetFloatv,
* GetDoublev and GetInteger64v:
*/
int GL_MAX_VIEWPORTS = 0x825B,
GL_VIEWPORT_SUBPIXEL_BITS = 0x825C,
GL_VIEWPORT_BOUNDS_RANGE = 0x825D,
GL_LAYER_PROVOKING_VERTEX = 0x825E,
GL_VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F;
/** Accepted by the &lt;pname&gt; parameter of GetIntegeri_v: */
int GL_SCISSOR_BOX = 0x0C10;
/** Accepted by the &lt;pname&gt; parameter of GetFloati_v: */
int GL_VIEWPORT = 0x0BA2;
/** Accepted by the &lt;pname&gt; parameter of GetDoublei_v: */
int GL_DEPTH_RANGE = 0x0B70;
/** Accepted by the &lt;pname&gt; parameter of Enablei, Disablei, and IsEnabledi: */
int GL_SCISSOR_TEST = 0x0C11;
/**
* Returned in the &lt;data&gt; parameter from a Get query with a &lt;pname&gt; of
* LAYER_PROVOKING_VERTEX or VIEWPORT_INDEX_PROVOKING_VERTEX:
*/
int GL_FIRST_VERTEX_CONVENTION = 0x8E4D,
GL_LAST_VERTEX_CONVENTION = 0x8E4E,
GL_PROVOKING_VERTEX = 0x8E4F,
GL_UNDEFINED_VERTEX = 0x8260;
@StripPostfix("v")
void glViewportArrayv(@GLuint int first, @AutoSize(value = "v", expression = " >> 2") @GLsizei int count, @Const FloatBuffer v);
void glViewportIndexedf(@GLuint int index, float x, float y, float w, float h);
@StripPostfix("v")
void glViewportIndexedfv(@GLuint int index, @Check("4") @Const FloatBuffer v);
@StripPostfix("v")
void glScissorArrayv(@GLuint int first, @AutoSize(value = "v", expression = " >> 2") @GLsizei int count, @Const IntBuffer v);
void glScissorIndexed(@GLuint int index, int left, int bottom, @GLsizei int width, @GLsizei int height);
@StripPostfix("v")
void glScissorIndexedv(@GLuint int index, @Check("4") @Const IntBuffer v);
@StripPostfix("v")
void glDepthRangeArrayv(@GLuint int first, @AutoSize(value = "v", expression = " >> 1") @GLsizei int count, @Const @GLclampd DoubleBuffer v);
void glDepthRangeIndexed(@GLuint int index, @GLclampd double n, @GLclampd double f);
@StripPostfix("data")
void glGetFloati_v(@GLenum int target, @GLuint int index, @Check @OutParameter FloatBuffer data);
@Alternate("glGetFloati_v")
@GLreturn("data")
@StripPostfix("data")
void glGetFloati_v2(@GLenum int target, @GLuint int index, @OutParameter FloatBuffer data);
@StripPostfix("data")
void glGetDoublei_v(@GLenum int target, @GLuint int index, @Check @OutParameter DoubleBuffer data);
@Alternate("glGetDoublei_v")
@GLreturn("data")
@StripPostfix("data")
void glGetDoublei_v2(@GLenum int target, @GLuint int index, @OutParameter DoubleBuffer data);
@StripPostfix(value = "v", extension = "EXT")
void glGetIntegerIndexedivEXT(@GLenum int target, @GLuint int index, @Check @OutParameter IntBuffer v);
@Alternate("glGetIntegerIndexedivEXT")
@GLreturn("v")
@StripPostfix(value = "v", extension = "EXT")
void glGetIntegerIndexedivEXT2(@GLenum int target, @GLuint int index, @OutParameter IntBuffer v);
void glEnableIndexedEXT(@GLenum int target, @GLuint int index);
void glDisableIndexedEXT(@GLenum int target, @GLuint int index);
boolean glIsEnabledIndexedEXT(@GLenum int target, @GLuint int index);
}

View File

@ -1343,7 +1343,6 @@ public interface EXT_direct_state_access {
OpenGL 3.1: New buffer data copy command
*/
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL31,GL_ARB_copy_buffer")
void glNamedCopyBufferSubDataEXT(@GLuint int readBuffer, @GLuint int writeBuffer, @GLintptr long readoffset, @GLintptr long writeoffset, @GLsizeiptr long size);
@ -1387,55 +1386,44 @@ public interface EXT_direct_state_access {
and change the final parameter from "const void *" to "intptr offset"
*/
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@DeprecatedGL
void glVertexArrayVertexOffsetEXT(@GLuint int vaobj, @GLuint int buffer, int size, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@DeprecatedGL
void glVertexArrayColorOffsetEXT(@GLuint int vaobj, @GLuint int buffer, int size, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@DeprecatedGL
void glVertexArrayEdgeFlagOffsetEXT(@GLuint int vaobj, @GLuint int buffer, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
void glVertexArrayIndexOffsetEXT(@GLuint int vaobj, @GLuint int buffer, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@DeprecatedGL
void glVertexArrayNormalOffsetEXT(@GLuint int vaobj, @GLuint int buffer, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@DeprecatedGL
void glVertexArrayTexCoordOffsetEXT(@GLuint int vaobj, @GLuint int buffer, int size, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@DeprecatedGL
void glVertexArrayMultiTexCoordOffsetEXT(@GLuint int vaobj, @GLuint int buffer, @GLenum int texunit, int size, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@DeprecatedGL
void glVertexArrayFogCoordOffsetEXT(@GLuint int vaobj, @GLuint int buffer, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@DeprecatedGL
void glVertexArraySecondaryColorOffsetEXT(@GLuint int vaobj, @GLuint int buffer, int size, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
void glVertexArrayVertexAttribOffsetEXT(@GLuint int vaobj, @GLuint int buffer, @GLuint int index, int size, @GLenum int type, boolean normalized, @GLsizei int stride, @GLintptr long offset);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
void glVertexArrayVertexAttribIOffsetEXT(@GLuint int vaobj, @GLuint int buffer, @GLuint int index, int size, @GLenum int type, @GLsizei int stride, @GLintptr long offset);
@ -1445,11 +1433,9 @@ public interface EXT_direct_state_access {
"uint vaobj" parameter
*/
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
void glEnableVertexArrayEXT(@GLuint int vaobj, @GLenum int array);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
void glDisableVertexArrayEXT(@GLuint int vaobj, @GLenum int array);
@ -1459,11 +1445,9 @@ public interface EXT_direct_state_access {
and add an initial "uint vaobj" parameter
*/
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
void glEnableVertexArrayAttribEXT(@GLuint int vaobj, @GLuint int index);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
void glDisableVertexArrayAttribEXT(@GLuint int vaobj, @GLuint int index);
@ -1471,7 +1455,6 @@ public interface EXT_direct_state_access {
OpenGL 3.0: New queries for vertex array objects
*/
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@StripPostfix("param")
void glGetVertexArrayIntegervEXT(@GLuint int vaobj, @GLenum int pname, @OutParameter @Check("16") IntBuffer param);
@ -1482,12 +1465,10 @@ public interface EXT_direct_state_access {
@StripPostfix("param")
void glGetVertexArrayIntegervEXT2(@GLuint int vaobj, @GLenum int pname, @OutParameter IntBuffer param);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@StripPostfix("param")
void glGetVertexArrayPointervEXT(@GLuint int vaobj, @GLenum int pname, @Result @GLvoid ByteBuffer param);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@StripPostfix(value = "param")
void glGetVertexArrayIntegeri_vEXT(@GLuint int vaobj, @GLuint int index, @GLenum int pname, @OutParameter @Check("16") IntBuffer param);
@ -1498,7 +1479,6 @@ public interface EXT_direct_state_access {
@StripPostfix(value = "param", postfix = "_v")
void glGetVertexArrayIntegeri_vEXT2(@GLuint int vaobj, @GLuint int index, @GLenum int pname, @OutParameter IntBuffer param);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@StripPostfix(value = "param")
void glGetVertexArrayPointeri_vEXT(@GLuint int vaobj, @GLuint int index, @GLenum int pname, @Result @GLvoid ByteBuffer param);
@ -1522,14 +1502,12 @@ public interface EXT_direct_state_access {
*
* @return A ByteBuffer representing the mapped buffer memory.
*/
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
@CachedResult(isRange = true)
@GLvoid
@AutoResultSize("length")
ByteBuffer glMapNamedBufferRangeEXT(@GLuint int buffer, @GLintptr long offset, @GLsizeiptr long length, @GLbitfield int access);
@Optional(reason = "AMD does not expose this (last driver checked: 10.5)")
@Dependent("OpenGL30")
void glFlushMappedNamedBufferRangeEXT(@GLuint int buffer, @GLintptr long offset, @GLsizeiptr long length);

View File

@ -46,16 +46,12 @@ public interface GL40 {
// ----------------------[ ARB_draw_buffers_blend ]----------------------
// ----------------------------------------------------------------------
@Optional(reason = "AMD's 4.0 implementation does not expose this (last driver checked: 10.3)")
void glBlendEquationi(@GLuint int buf, @GLenum int mode);
@Optional(reason = "AMD's 4.0 implementation does not expose this (last driver checked: 10.3)")
void glBlendEquationSeparatei(@GLuint int buf, @GLenum int modeRGB, @GLenum int modeAlpha);
@Optional(reason = "AMD's 4.0 implementation does not expose this (last driver checked: 10.3)")
void glBlendFunci(@GLuint int buf, @GLenum int src, @GLenum int dst);
@Optional(reason = "AMD's 4.0 implementation does not expose this (last driver checked: 10.3)")
void glBlendFuncSeparatei(@GLuint int buf, @GLenum int srcRGB, @GLenum int dstRGB, @GLenum int srcAlpha, @GLenum int dstAlpha);
// -----------------------------------------------------------------
@ -186,7 +182,6 @@ public interface GL40 {
*/
int GL_MIN_SAMPLE_SHADING_VALUE = 0x8C37;
@Optional(reason = "AMD's 4.0 implementation does not expose this (last driver checked: 10.3)")
void glMinSampleShading(@GLclampf float value);
// ---------------------------------------------------------------------

View File

@ -0,0 +1,457 @@
/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.opengl;
import org.lwjgl.util.generator.*;
import java.nio.*;
public interface GL41 {
// ---------------------------------------------------------------------
// ----------------------[ ARB_ES2_compatibility ]----------------------
// ---------------------------------------------------------------------
/**
* Accepted by the &lt;value&gt; parameter of GetBooleanv, GetIntegerv,
* GetInteger64v, GetFloatv, and GetDoublev:
*/
int GL_SHADER_COMPILER = 0x8DFA,
GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9,
GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB,
GL_MAX_VARYING_VECTORS = 0x8DFC,
GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD,
GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A,
GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B;
/** Accepted by the &lt;type&gt; parameter of VertexAttribPointer: */
int GL_FIXED = 0x140C;
/**
* Accepted by the &lt;precisiontype&gt; parameter of
* GetShaderPrecisionFormat:
*/
int GL_LOW_FLOAT = 0x8DF0,
GL_MEDIUM_FLOAT = 0x8DF1,
GL_HIGH_FLOAT = 0x8DF2,
GL_LOW_INT = 0x8DF3,
GL_MEDIUM_INT = 0x8DF4,
GL_HIGH_INT = 0x8DF5;
void glReleaseShaderCompiler();
void glShaderBinary(@AutoSize("shaders") @GLsizei int count, @Const @GLuint IntBuffer shaders,
@GLenum int binaryformat, @Const @GLvoid ByteBuffer binary, @AutoSize("binary") @GLsizei int length);
void glGetShaderPrecisionFormat(@GLenum int shadertype, @GLenum int precisiontype,
@OutParameter @Check("2") IntBuffer range,
@OutParameter @Check("1") IntBuffer precision);
void glDepthRangef(@GLclampf float n, @GLclampf float f);
void glClearDepthf(@GLclampf float d);
// ----------------------------------------------------------------------
// ----------------------[ ARB_get_program_binary ]----------------------
// ----------------------------------------------------------------------
/**
* Accepted by the &lt;pname&gt; parameter of ProgramParameteri and
* GetProgramiv:
*/
int GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257;
/** Accepted by the &lt;pname&gt; parameter of GetProgramiv: */
int GL_PROGRAM_BINARY_LENGTH = 0x8741;
/**
* Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetIntegerv,
* GetInteger64v, GetFloatv and GetDoublev:
*/
int GL_NUM_PROGRAM_BINARY_FORMATS = 0x87FE,
GL_PROGRAM_BINARY_FORMATS = 0x87FF;
void glGetProgramBinary(@GLuint int program, @AutoSize("binary") @GLsizei int bufSize,
@Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
@Check("1") @GLenum IntBuffer binaryFormat,
@OutParameter @GLvoid ByteBuffer binary);
void glProgramBinary(@GLuint int program, @GLenum int binaryFormat, @Const @GLvoid ByteBuffer binary, @AutoSize("binary") @GLsizei int length);
void glProgramParameteri(@GLuint int program, @GLenum int pname, int value);
// ---------------------------------------------------------------------------
// ----------------------[ ARB_separate_shader_objects ]----------------------
// ---------------------------------------------------------------------------
/** Accepted by &lt;stages&gt; parameter to UseProgramStages: */
int GL_VERTEX_SHADER_BIT = 0x00000001,
GL_FRAGMENT_SHADER_BIT = 0x00000002,
GL_GEOMETRY_SHADER_BIT = 0x00000004,
GL_TESS_CONTROL_SHADER_BIT = 0x00000008,
GL_TESS_EVALUATION_SHADER_BIT = 0x00000010,
GL_ALL_SHADER_BITS = 0xFFFFFFFF;
/**
* Accepted by the &lt;pname&gt; parameter of ProgramParameteri and
* GetProgramiv:
*/
int GL_PROGRAM_SEPARABLE = 0x8258;
/** Accepted by &lt;type&gt; parameter to GetProgramPipelineiv: */
int GL_ACTIVE_PROGRAM = 0x8259;
/**
* Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetIntegerv,
* GetInteger64v, GetFloatv, and GetDoublev:
*/
int GL_PROGRAM_PIPELINE_BINDING = 0x825A;
void glUseProgramStages(@GLuint int pipeline, @GLbitfield int stages, @GLuint int program);
void glActiveShaderProgram(@GLuint int pipeline, @GLuint int program);
@StripPostfix(value = "strings", postfix = "v")
@GLuint
int glCreateShaderProgramv(@GLenum int type, @GLsizei int count, @Check @Const @Indirect @GLchar ByteBuffer strings);
@Alternate("glCreateShaderProgramv")
@StripPostfix(value = "string", postfix = "v")
@GLuint
int glCreateShaderProgramv(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated CharSequence string);
@Alternate("glCreateShaderProgramv")
@StripPostfix(value = "strings", postfix = "v")
@GLuint
int glCreateShaderProgramv(@GLenum int type, @Constant("strings.length") @GLsizei int count,
@Const @NullTerminated @StringList(value = "count") CharSequence[] strings);
void glBindProgramPipeline(@GLuint int pipeline);
void glDeleteProgramPipelines(@AutoSize("pipelines") @GLsizei int n, @Const @GLuint IntBuffer pipelines);
@Alternate("glDeleteProgramPipelines")
void glDeleteProgramPipelines(@Constant("1") @GLsizei int n, @Constant(value = "APIUtils.getBufferInt().put(0, pipeline), 0", keepParam = true) int pipeline);
void glGenProgramPipelines(@AutoSize("pipelines") @GLsizei int n, @OutParameter @GLuint IntBuffer pipelines);
@Alternate("glGenProgramPipelines")
@GLreturn("pipelines")
void glGenProgramPipelines2(@Constant("1") @GLsizei int n, @OutParameter @GLuint IntBuffer pipelines);
boolean glIsProgramPipeline(@GLuint int pipeline);
@StripPostfix("params")
void glGetProgramPipelineiv(@GLuint int pipeline, @GLenum int pname, @OutParameter @Check("1") IntBuffer params);
@Alternate("glGetProgramPipelineiv")
@GLreturn("params")
@StripPostfix("params")
void glGetProgramPipelineiv2(@GLuint int pipeline, @GLenum int pname, @OutParameter IntBuffer params);
void glProgramUniform1i(@GLuint int program, int location, int v0);
void glProgramUniform2i(@GLuint int program, int location, int v0, int v1);
void glProgramUniform3i(@GLuint int program, int location, int v0, int v1, int v2);
void glProgramUniform4i(@GLuint int program, int location, int v0, int v1, int v2, int v3);
void glProgramUniform1f(@GLuint int program, int location, float v0);
void glProgramUniform2f(@GLuint int program, int location, float v0, float v1);
void glProgramUniform3f(@GLuint int program, int location, float v0, float v1, float v2);
void glProgramUniform4f(@GLuint int program, int location, float v0, float v1, float v2, float v3);
void glProgramUniform1d(@GLuint int program, int location, double v0);
void glProgramUniform2d(@GLuint int program, int location, double v0, double v1);
void glProgramUniform3d(@GLuint int program, int location, double v0, double v1, double v2);
void glProgramUniform4d(@GLuint int program, int location, double v0, double v1, double v2, double v3);
@StripPostfix("value")
void glProgramUniform1iv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform2iv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform3iv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform4iv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform1fv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniform2fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniform3fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniform4fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniform1dv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniform2dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniform3dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniform4dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const DoubleBuffer value);
void glProgramUniform1ui(@GLuint int program, int location, int v0);
void glProgramUniform2ui(@GLuint int program, int location, int v0, int v1);
void glProgramUniform3ui(@GLuint int program, int location, int v0, int v1, int v2);
void glProgramUniform4ui(@GLuint int program, int location, int v0, int v1, int v2, int v3);
@StripPostfix("value")
void glProgramUniform1uiv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform2uiv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform3uiv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniform4uiv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const IntBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / (3 * 3)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 4") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / (3 * 3)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 4") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2x3fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (2 * 3)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3x2fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (3 * 2)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2x4fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4x2fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3x4fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (3 * 4)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4x3fv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (4 * 3)") @GLsizei int count, boolean transpose, @Const FloatBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2x3dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (2 * 3)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3x2dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (3 * 2)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix2x4dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4x2dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " >> 3") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix3x4dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (3 * 4)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
@StripPostfix("value")
void glProgramUniformMatrix4x3dv(@GLuint int program, int location,
@AutoSize(value = "value", expression = " / (4 * 3)") @GLsizei int count, boolean transpose, @Const DoubleBuffer value);
void glValidateProgramPipeline(@GLuint int pipeline);
void glGetProgramPipelineInfoLog(@GLuint int pipeline, @AutoSize("infoLog") @GLsizei int bufSize,
@OutParameter @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
@OutParameter @GLchar ByteBuffer infoLog);
@Alternate("glGetProgramPipelineInfoLog")
@GLreturn(value = "infoLog", maxLength = "bufSize")
void glGetProgramPipelineInfoLog2(@GLuint int pipeline, @GLsizei int bufSize,
@OutParameter @GLsizei @Constant("infoLog_length, 0") IntBuffer length,
@OutParameter @GLchar ByteBuffer infoLog);
// -----------------------------------------------------------------------
// ----------------------[ ARB_vertex_attrib_64bit ]----------------------
// -----------------------------------------------------------------------
/** Returned in the &lt;type&gt; parameter of GetActiveAttrib: */
int GL_DOUBLE_VEC2 = 0x8FFC;
int GL_DOUBLE_VEC3 = 0x8FFD;
int GL_DOUBLE_VEC4 = 0x8FFE;
int GL_DOUBLE_MAT2 = 0x8F46;
int GL_DOUBLE_MAT3 = 0x8F47;
int GL_DOUBLE_MAT4 = 0x8F48;
int GL_DOUBLE_MAT2x3 = 0x8F49;
int GL_DOUBLE_MAT2x4 = 0x8F4A;
int GL_DOUBLE_MAT3x2 = 0x8F4B;
int GL_DOUBLE_MAT3x4 = 0x8F4C;
int GL_DOUBLE_MAT4x2 = 0x8F4D;
int GL_DOUBLE_MAT4x3 = 0x8F4E;
void glVertexAttribL1d(@GLuint int index, double x);
void glVertexAttribL2d(@GLuint int index, double x, double y);
void glVertexAttribL3d(@GLuint int index, double x, double y, double z);
void glVertexAttribL4d(@GLuint int index, double x, double y, double z, double w);
@StripPostfix("v")
void glVertexAttribL1dv(@GLuint int index, @Const @Check("1") DoubleBuffer v);
@StripPostfix("v")
void glVertexAttribL2dv(@GLuint int index, @Const @Check("2") DoubleBuffer v);
@StripPostfix("v")
void glVertexAttribL3dv(@GLuint int index, @Const @Check("3") DoubleBuffer v);
@StripPostfix("v")
void glVertexAttribL4dv(@GLuint int index, @Const @Check("4") DoubleBuffer v);
void glVertexAttribLPointer(@GLuint int index, int size, @Constant("GL11.GL_DOUBLE") @GLenum int type, @GLsizei int stride,
@CachedReference(index = "index", name = "glVertexAttribPointer_buffer")
@BufferObject(BufferKind.ArrayVBO)
@Check @Const @GLdouble Buffer pointer);
@StripPostfix("params")
void glGetVertexAttribLdv(@GLuint int index, @GLenum int pname, @OutParameter @Check("4") DoubleBuffer params);
// ------------------------------------------------------------------
// ----------------------[ ARB_viewport_array ]----------------------
// ------------------------------------------------------------------
/**
* Accepted by the &lt;pname&gt; parameter of GetBooleanv, GetIntegerv, GetFloatv,
* GetDoublev and GetInteger64v:
*/
int GL_MAX_VIEWPORTS = 0x825B,
GL_VIEWPORT_SUBPIXEL_BITS = 0x825C,
GL_VIEWPORT_BOUNDS_RANGE = 0x825D,
GL_LAYER_PROVOKING_VERTEX = 0x825E,
GL_VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F;
/** Accepted by the &lt;pname&gt; parameter of GetIntegeri_v: */
int GL_SCISSOR_BOX = 0x0C10;
/** Accepted by the &lt;pname&gt; parameter of GetFloati_v: */
int GL_VIEWPORT = 0x0BA2;
/** Accepted by the &lt;pname&gt; parameter of GetDoublei_v: */
int GL_DEPTH_RANGE = 0x0B70;
/** Accepted by the &lt;pname&gt; parameter of Enablei, Disablei, and IsEnabledi: */
int GL_SCISSOR_TEST = 0x0C11;
/**
* Returned in the &lt;data&gt; parameter from a Get query with a &lt;pname&gt; of
* LAYER_PROVOKING_VERTEX or VIEWPORT_INDEX_PROVOKING_VERTEX:
*/
int GL_FIRST_VERTEX_CONVENTION = 0x8E4D,
GL_LAST_VERTEX_CONVENTION = 0x8E4E,
GL_PROVOKING_VERTEX = 0x8E4F,
GL_UNDEFINED_VERTEX = 0x8260;
@StripPostfix("v")
void glViewportArrayv(@GLuint int first, @AutoSize(value = "v", expression = " >> 2") @GLsizei int count, @Const FloatBuffer v);
void glViewportIndexedf(@GLuint int index, float x, float y, float w, float h);
@StripPostfix("v")
void glViewportIndexedfv(@GLuint int index, @Check("4") @Const FloatBuffer v);
@StripPostfix("v")
void glScissorArrayv(@GLuint int first, @AutoSize(value = "v", expression = " >> 2") @GLsizei int count, @Const IntBuffer v);
void glScissorIndexed(@GLuint int index, int left, int bottom, @GLsizei int width, @GLsizei int height);
@StripPostfix("v")
void glScissorIndexedv(@GLuint int index, @Check("4") @Const IntBuffer v);
@StripPostfix("v")
void glDepthRangeArrayv(@GLuint int first, @AutoSize(value = "v", expression = " >> 1") @GLsizei int count, @Const @GLclampd DoubleBuffer v);
void glDepthRangeIndexed(@GLuint int index, @GLclampd double n, @GLclampd double f);
@StripPostfix("data")
void glGetFloati_v(@GLenum int target, @GLuint int index, @Check @OutParameter FloatBuffer data);
@Alternate("glGetFloati_v")
@GLreturn("data")
@StripPostfix("data")
void glGetFloati_v2(@GLenum int target, @GLuint int index, @OutParameter FloatBuffer data);
@StripPostfix("data")
void glGetDoublei_v(@GLenum int target, @GLuint int index, @Check @OutParameter DoubleBuffer data);
@Alternate("glGetDoublei_v")
@GLreturn("data")
@StripPostfix("data")
void glGetDoublei_v2(@GLenum int target, @GLuint int index, @OutParameter DoubleBuffer data);
}