diff --git a/src/java/org/lwjgl/opengl/ARBDrawBuffers.java b/src/java/org/lwjgl/opengl/ARBDrawBuffers.java new file mode 100644 index 00000000..d88207aa --- /dev/null +++ b/src/java/org/lwjgl/opengl/ARBDrawBuffers.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2002-2004 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.BufferChecks; +import org.lwjgl.LWJGLException; + +import java.nio.IntBuffer; + +public final class ARBDrawBuffers { + + /* + * Accepted by the parameters of GetIntegerv, GetFloatv, + * and GetDoublev: + */ + public static final int GL_MAX_DRAW_BUFFERS_ARB = 0x8824; + public static final int GL_DRAW_BUFFER0_ARB = 0x8825; + public static final int GL_DRAW_BUFFER1_ARB = 0x8826; + public static final int GL_DRAW_BUFFER2_ARB = 0x8827; + public static final int GL_DRAW_BUFFER3_ARB = 0x8828; + public static final int GL_DRAW_BUFFER4_ARB = 0x8829; + public static final int GL_DRAW_BUFFER5_ARB = 0x882A; + public static final int GL_DRAW_BUFFER6_ARB = 0x882B; + public static final int GL_DRAW_BUFFER7_ARB = 0x882C; + public static final int GL_DRAW_BUFFER8_ARB = 0x882D; + public static final int GL_DRAW_BUFFER9_ARB = 0x882E; + public static final int GL_DRAW_BUFFER10_ARB = 0x882F; + public static final int GL_DRAW_BUFFER11_ARB = 0x8830; + public static final int GL_DRAW_BUFFER12_ARB = 0x8831; + public static final int GL_DRAW_BUFFER13_ARB = 0x8832; + public static final int GL_DRAW_BUFFER14_ARB = 0x8833; + public static final int GL_DRAW_BUFFER15_ARB = 0x8834; + + private ARBDrawBuffers() { + } + + static native void initNativeStubs() throws LWJGLException; + + // --------------------------- + public static void glDrawBuffersARB(IntBuffer buffers) { + BufferChecks.checkBuffer(buffers, 1); + nglDrawBuffersARB(buffers.remaining(), buffers, buffers.position()); + } + + private static native void nglDrawBuffersARB(int size, IntBuffer buffers, int buffersOffset); + // --------------------------- + +} diff --git a/src/java/org/lwjgl/opengl/ARBTextureRectangle.java b/src/java/org/lwjgl/opengl/ARBTextureRectangle.java new file mode 100644 index 00000000..2fd69eda --- /dev/null +++ b/src/java/org/lwjgl/opengl/ARBTextureRectangle.java @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2002-2004 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 final class ARBTextureRectangle { + + /* + * Accepted by the parameter of Enable, Disable and + * IsEnabled; by the parameter of GetBooleanv, GetIntegerv, + * GetFloatv and GetDoublev; and by the parameter of + * BindTexture, GetTexParameterfv, GetTexParameteriv, + * TexParameterf, TexParameteri, TexParameterfv and TexParameteriv: + + * Accepted by the parameter of GetTexImage, + * GetTexLevelParameteriv, GetTexLevelParameterfv, TexImage2D, + * CopyTexImage2D, TexSubImage2D and CopySubTexImage2D: + */ + public static final int GL_TEXTURE_RECTANGLE_ARB = 0x84F5; + + /* + * Accepted by the parameter of GetBooleanv, GetIntegerv, + * GetFloatv and GetDoublev: + */ + public static final int GL_TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6; + + /* + * Accepted by the parameter of GetTexLevelParameteriv, + * GetTexLevelParameterfv, GetTexParameteriv and TexImage2D: + */ + public static final int GL_PROXY_TEXTURE_RECTANGLE_ARB = 0x84F7; + + /* + * Accepted by the parameter of GetBooleanv, GetDoublev, + * GetIntegerv and GetFloatv: + */ + public static final int GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB = 0x84F8; + + private ARBTextureRectangle() { + } + +} diff --git a/src/java/org/lwjgl/opengl/GLContext.java b/src/java/org/lwjgl/opengl/GLContext.java index 1a00bf64..912d96f3 100644 --- a/src/java/org/lwjgl/opengl/GLContext.java +++ b/src/java/org/lwjgl/opengl/GLContext.java @@ -1,31 +1,31 @@ -/* +/* * Copyright (c) 2002-2004 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 + * modification, are permitted provided that the following conditions are * met: - * - * * Redistributions of source code must retain the above copyright + * + * * 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 + * * 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 + * 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 + * 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. */ @@ -64,11 +64,12 @@ public final class GLContext { /* * Available extensions */ - public static boolean GL_ARB_imaging; public static boolean GL_ARB_depth_texture; + public static boolean GL_ARB_draw_buffers; public static boolean GL_ARB_fragment_program; public static boolean GL_ARB_fragment_program_shadow; public static boolean GL_ARB_fragment_shader; + public static boolean GL_ARB_imaging; public static boolean GL_ARB_matrix_palette; public static boolean GL_ARB_multisample; public static boolean GL_ARB_multitexture; @@ -88,6 +89,7 @@ public final class GLContext { public static boolean GL_ARB_texture_env_dot3; public static boolean GL_ARB_texture_mirrored_repeat; public static boolean GL_ARB_texture_non_power_of_two; + public static boolean GL_ARB_texture_rectangle; public static boolean GL_ARB_transpose_matrix; public static boolean GL_ARB_vertex_blend; public static boolean GL_ARB_vertex_buffer_object; @@ -244,7 +246,7 @@ public final class GLContext { // Yes, so we don't need to do anything. Our caps and function pointers are still valid. return; } - + // Ok, now it's the current context. if (gl_ref_count == 0) { loadOpenGLLibrary(); @@ -283,7 +285,7 @@ public final class GLContext { default: break; } - + } addExtensionClass(exts, exts_names, "EXTTextureCompressionS3TC", ""); String extensions_string = GL11.glGetString(GL11.GL_EXTENSIONS); @@ -390,7 +392,7 @@ public final class GLContext { private static native void nLoadOpenGLLibrary() throws LWJGLException; /** - * The OpenGL library reference count is decremented, and if it + * The OpenGL library reference count is decremented, and if it * reaches 0, the library is unloaded. */ public static void unloadOpenGLLibrary() { diff --git a/src/native/common/arb/Makefile.am b/src/native/common/arb/Makefile.am index a152760c..4c77db32 100644 --- a/src/native/common/arb/Makefile.am +++ b/src/native/common/arb/Makefile.am @@ -3,19 +3,20 @@ noinst_LTLIBRARIES = libarb.la libarb_la_SOURCES = $(SRC) INCLUDES=-I.. SRC = org_lwjgl_opengl_ARBBufferObject.cpp \ + org_lwjgl_opengl_ARBDrawBuffers.cpp \ org_lwjgl_opengl_ARBProgram.cpp \ - org_lwjgl_opengl_ARBProgram.cpp \ - org_lwjgl_opengl_ARBMatrixPalette.cpp \ - org_lwjgl_opengl_ARBMultisample.cpp \ - org_lwjgl_opengl_ARBMultitexture.cpp \ - org_lwjgl_opengl_ARBPointParameters.cpp \ - org_lwjgl_opengl_ARBProgram.cpp \ - org_lwjgl_opengl_ARBTextureCompression.cpp \ - org_lwjgl_opengl_ARBTransposeMatrix.cpp \ - org_lwjgl_opengl_ARBVertexBlend.cpp \ - org_lwjgl_opengl_ARBVertexProgram.cpp \ - org_lwjgl_opengl_ARBWindowPos.cpp \ - org_lwjgl_opengl_ARBOcclusionQuery.cpp \ - org_lwjgl_opengl_ARBShaderObjects.cpp \ - org_lwjgl_opengl_ARBVertexShader.cpp \ - org_lwjgl_opengl_ARBImaging.cpp + org_lwjgl_opengl_ARBProgram.cpp \ + org_lwjgl_opengl_ARBMatrixPalette.cpp \ + org_lwjgl_opengl_ARBMultisample.cpp \ + org_lwjgl_opengl_ARBMultitexture.cpp \ + org_lwjgl_opengl_ARBPointParameters.cpp \ + org_lwjgl_opengl_ARBProgram.cpp \ + org_lwjgl_opengl_ARBTextureCompression.cpp \ + org_lwjgl_opengl_ARBTransposeMatrix.cpp \ + org_lwjgl_opengl_ARBVertexBlend.cpp \ + org_lwjgl_opengl_ARBVertexProgram.cpp \ + org_lwjgl_opengl_ARBWindowPos.cpp \ + org_lwjgl_opengl_ARBOcclusionQuery.cpp \ + org_lwjgl_opengl_ARBShaderObjects.cpp \ + org_lwjgl_opengl_ARBVertexShader.cpp \ + org_lwjgl_opengl_ARBImaging.cpp diff --git a/src/native/common/arb/org_lwjgl_opengl_ARBDrawBuffers.cpp b/src/native/common/arb/org_lwjgl_opengl_ARBDrawBuffers.cpp new file mode 100644 index 00000000..12293fa2 --- /dev/null +++ b/src/native/common/arb/org_lwjgl_opengl_ARBDrawBuffers.cpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2002-2004 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. + */ + +// ---------------------------------- +// IMPLEMENTATION OF NATIVE METHODS FOR CLASS: org.lwjgl.opengl.ARBDrawBuffers +// ---------------------------------- + +#include "extgl.h" + + +typedef void (APIENTRY * glDrawBuffersARBPROC) (GLsizei n, const GLenum *bufs); + +static glDrawBuffersARBPROC glDrawBuffersARB; + +/* + * Class: org.lwjgl.opengl.ARBDrawBuffers + * Method: nglDrawBuffersARB + */ +static void JNICALL Java_org_lwjgl_opengl_ARBDrawBuffers_nglDrawBuffersARB + (JNIEnv * env, jclass clazz, jint size, jobject buffers, jint buffersOffset) +{ + GLuint *buffers_ptr = (GLuint *)env->GetDirectBufferAddress(buffers) + buffersOffset; + glDrawBuffersARB(size, buffers_ptr); + +} + +extern "C" { +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_ARBDrawBuffers_initNativeStubs(JNIEnv *env, jclass clazz) { + JavaMethodAndExtFunction functions[] = { + {"nglDrawBuffersARB", "(ILjava/nio/IntBuffer;I)V", (void*)&Java_org_lwjgl_opengl_ARBDrawBuffers_nglDrawBuffersARB, "glDrawBuffersARB", (void**)&glDrawBuffersARB} + }; + int num_functions = NUMFUNCTIONS(functions); + extgl_InitializeClass(env, clazz, num_functions, functions); +} +} +