From 4b09065e863d1a3b4cb62b9629da945f508e391f Mon Sep 17 00:00:00 2001 From: Ioannis Tsakpinis Date: Tue, 18 Jan 2005 20:57:32 +0000 Subject: [PATCH] Added EXT_framebuffer_object --- .../lwjgl/opengl/EXTFramebufferObject.java | 209 +++++++++++++ src/java/org/lwjgl/opengl/GLContext.java | 1 + .../org_lwjgl_opengl_EXTFramebufferObject.c | 279 ++++++++++++++++++ 3 files changed, 489 insertions(+) create mode 100644 src/java/org/lwjgl/opengl/EXTFramebufferObject.java create mode 100644 src/native/common/ext/org_lwjgl_opengl_EXTFramebufferObject.c diff --git a/src/java/org/lwjgl/opengl/EXTFramebufferObject.java b/src/java/org/lwjgl/opengl/EXTFramebufferObject.java new file mode 100644 index 00000000..1f888401 --- /dev/null +++ b/src/java/org/lwjgl/opengl/EXTFramebufferObject.java @@ -0,0 +1,209 @@ +/* + * 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 EXTFramebufferObject { + + + /** + * Accepted by the parameter of BindFramebufferEXT, + * CheckFramebufferStatusEXT, FramebufferTexture{1D|2D|3D}EXT, and + * FramebufferRenderbufferEXT: + */ + public static final int GL_FRAMEBUFFER_EXT = 0x8D40; + + /** + * Accepted by the parameter of BindRenderbufferEXT, + * RenderbufferStorageEXT, and GetRenderbufferParameterivEXT, and + * returned by GetFramebufferAttachmentParameterivEXT: + */ + public static final int GL_RENDERBUFFER_EXT = 0x8D41; + + /** + * Accepted by the parameter of + * RenderbufferStorageEXT: + */ + public static final int GL_STENCIL_INDEX_EXT = 0x8D45; + public static final int GL_STENCIL_INDEX1_EXT = 0x8D46; + public static final int GL_STENCIL_INDEX4_EXT = 0x8D47; + public static final int GL_STENCIL_INDEX8_EXT = 0x8D48; + public static final int GL_STENCIL_INDEX16_EXT = 0x8D49; + + /** + * Accepted by the parameter of GetRenderbufferParameterivEXT: + */ + public static final int GL_RENDERBUFFER_WIDTH_EXT = 0x8D42; + public static final int GL_RENDERBUFFER_HEIGHT_EXT = 0x8D43; + public static final int GL_RENDERBUFFER_INTERNAL_FORMAT_EXT = 0x8D44; + + /** + * Accepted by the parameter of + * GetFramebufferAttachmentParameterivEXT: + */ + public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = 0x8CD0; + public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = 0x8CD1; + public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = 0x8CD2; + public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3; + public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = 0x8CD4; + + /** + * Accepted by the parameter of + * FramebufferTexture{1D|2D|3D}EXT, FramebufferRenderbufferEXT, and + * GetFramebufferAttachmentParameterivEXT + */ + public static final int GL_COLOR_ATTACHMENT0_EXT = 0x8CE0; + public static final int GL_COLOR_ATTACHMENT1_EXT = 0x8CE1; + public static final int GL_COLOR_ATTACHMENT2_EXT = 0x8CE2; + public static final int GL_COLOR_ATTACHMENT3_EXT = 0x8CE3; + public static final int GL_COLOR_ATTACHMENT4_EXT = 0x8CE4; + public static final int GL_COLOR_ATTACHMENT5_EXT = 0x8CE5; + public static final int GL_COLOR_ATTACHMENT6_EXT = 0x8CE6; + public static final int GL_COLOR_ATTACHMENT7_EXT = 0x8CE7; + public static final int GL_COLOR_ATTACHMENT8_EXT = 0x8CE8; + public static final int GL_COLOR_ATTACHMENT9_EXT = 0x8CE9; + public static final int GL_COLOR_ATTACHMENT10_EXT = 0x8CEA; + public static final int GL_COLOR_ATTACHMENT11_EXT = 0x8CEB; + public static final int GL_COLOR_ATTACHMENT12_EXT = 0x8CEC; + public static final int GL_COLOR_ATTACHMENT13_EXT = 0x8CED; + public static final int GL_COLOR_ATTACHMENT14_EXT = 0x8CEE; + public static final int GL_COLOR_ATTACHMENT15_EXT = 0x8CEF; + public static final int GL_DEPTH_ATTACHMENT_EXT = 0x8D00; + public static final int GL_STENCIL_ATTACHMENT_EXT = 0x8D20; + + /** + * Returned by CheckFramebufferStatusEXT(): + */ + public static final int GL_FRAMEBUFFER_COMPLETE_EXT = 0x8CD5; + public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x8CD6; + public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = 0x8CD7; + public static final int GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT = 0x8CD8; + public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = 0x8CD9; + public static final int GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = 0x8CDA; + public static final int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = 0x8CDB; + public static final int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = 0x8CDC; + public static final int GL_FRAMEBUFFER_UNSUPPORTED_EXT = 0x8CDD; + public static final int GL_FRAMEBUFFER_STATUS_ERROR_EXT = 0x8CDE; + + /** + * Accepted by GetIntegerv(): + */ + public static final int GL_FRAMEBUFFER_BINDING_EXT = 0x8CA6; + public static final int GL_RENDERBUFFER_BINDING_EXT = 0x8CA7; + public static final int GL_MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF; + public static final int GL_MAX_RENDERBUFFER_SIZE_EXT = 0x84E8; + + /** + * Returned by GetError(): + */ + public static final int GL_INVALID_FRAMEBUFFER_OPERATION_EXT = 0x0506; + + private EXTFramebufferObject() { + } + + static native void initNativeStubs() throws LWJGLException; + + public static native boolean glIsRenderbufferEXT(int renderbuffer); + + public static native void glBindRenderbufferEXT(int target, int renderbuffer); + + // --------------------------- + public static void glDeleteRenderbuffersEXT(IntBuffer renderbuffers) { + BufferChecks.checkDirect(renderbuffers); + nglDeleteRenderbuffersEXT(renderbuffers.remaining(), renderbuffers, renderbuffers.position()); + } + private static native void nglDeleteRenderbuffersEXT(int n, IntBuffer renderbuffers, int offset); + // --------------------------- + + // --------------------------- + public static void glGenRenderbuffersEXT(IntBuffer renderbuffers) { + BufferChecks.checkDirect(renderbuffers); + nglGenRenderbuffersEXT(renderbuffers.remaining(), renderbuffers, renderbuffers.position()); + } + private static native void nglGenRenderbuffersEXT(int n, IntBuffer renderbuffers, int offset); + // --------------------------- + + public static native void glRenderbufferStorageEXT(int target, int internalformat, int width, int height); + + // --------------------------- + public static void glGetRenderbufferParameterivEXT(int target, int pname, IntBuffer params) { + BufferChecks.checkBuffer(params); + nglGetRenderbufferParameterivEXT(target, pname, params, params.position()); + } + private static native void nglGetRenderbufferParameterivEXT(int target, int pname, IntBuffer params, int offset); + // --------------------------- + + public static native boolean glIsFramebufferEXT(int framebuffer); + + public static native void glBindFramebufferEXT(int target, int framebuffer); + + // --------------------------- + public static void glDeleteFramebuffersEXT(IntBuffer framebuffers) { + BufferChecks.checkDirect(framebuffers); + nglDeleteFramebuffersEXT(framebuffers.remaining(), framebuffers, framebuffers.position()); + } + private static native void nglDeleteFramebuffersEXT(int n, IntBuffer framebuffers, int offset); + // --------------------------- + + // --------------------------- + public static void glGenFramebuffersEXT(IntBuffer framebuffers) { + BufferChecks.checkDirect(framebuffers); + nglGenFramebuffersEXT(framebuffers.remaining(), framebuffers, framebuffers.position()); + } + private static native void nglGenFramebuffersEXT(int n, IntBuffer framebuffers, int offset); + // --------------------------- + + public static native int glCheckFramebufferStatusEXT(int target); + + public static native void glFramebufferTexture1DEXT(int target, int attachment, int textarget, int texture, int level); + + public static native void glFramebufferTexture2DEXT(int target, int attachment, int textarget, int texture, int level); + + public static native void glFramebufferTexture3DEXT(int target, int attachment, int textarget, int texture, int level, int zoffset); + + public static native void glFramebufferRenderbufferEXT(int target, int attachment, int renderbuffertarget, int renderbuffer); + + // --------------------------- + public static void glGetFramebufferAttachmentParameterivEXT(int target, int attachment, int pname, IntBuffer params) { + BufferChecks.checkDirect(params); + nglGetFramebufferAttachmentParameterivEXT(target, attachment, pname, params, params.position()); + } + private static native void nglGetFramebufferAttachmentParameterivEXT(int target, int attachment, int pname, IntBuffer params, int offset); + // --------------------------- + + public static native void glGenerateMipmapEXT(int target); + +} \ No newline at end of file diff --git a/src/java/org/lwjgl/opengl/GLContext.java b/src/java/org/lwjgl/opengl/GLContext.java index a03fe5b2..d8ea9541 100644 --- a/src/java/org/lwjgl/opengl/GLContext.java +++ b/src/java/org/lwjgl/opengl/GLContext.java @@ -105,6 +105,7 @@ public final class GLContext { public static boolean GL_EXT_depth_bounds_test; public static boolean GL_EXT_draw_range_elements; public static boolean GL_EXT_fog_coord; + public static boolean GL_EXT_framebuffer_object; public static boolean GL_EXT_multi_draw_arrays; public static boolean GL_EXT_packed_pixels; public static boolean GL_EXT_paletted_texture; diff --git a/src/native/common/ext/org_lwjgl_opengl_EXTFramebufferObject.c b/src/native/common/ext/org_lwjgl_opengl_EXTFramebufferObject.c new file mode 100644 index 00000000..d84f7e07 --- /dev/null +++ b/src/native/common/ext/org_lwjgl_opengl_EXTFramebufferObject.c @@ -0,0 +1,279 @@ +/* + * 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.EXTFramebufferObject +// ---------------------------------- + +#include "extgl.h" + +typedef GLboolean (APIENTRY * glIsRenderbufferEXTPROC) (GLuint renderbuffer); +typedef GLvoid (APIENTRY * glBindRenderbufferEXTPROC) (GLenum target, GLuint renderbuffer); +typedef GLvoid (APIENTRY * glDeleteRenderbuffersEXTPROC) (GLsizei n, const GLuint *renderbuffers); +typedef GLvoid (APIENTRY * glGenRenderbuffersEXTPROC) (GLsizei n, GLuint *renderbuffers); +typedef GLvoid (APIENTRY * glRenderbufferStorageEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef GLvoid (APIENTRY * glGetRenderbufferParameterivEXTPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (APIENTRY * glIsFramebufferEXTPROC) (GLuint framebuffer); +typedef GLvoid (APIENTRY * glBindFramebufferEXTPROC) (GLenum target, GLuint framebuffer); +typedef GLvoid (APIENTRY * glDeleteFramebuffersEXTPROC) (GLsizei n, const GLuint *framebuffers); +typedef GLvoid (APIENTRY * glGenFramebuffersEXTPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRY * glCheckFramebufferStatusEXTPROC) (GLenum target); +typedef GLvoid (APIENTRY * glFramebufferTexture1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef GLvoid (APIENTRY * glFramebufferTexture2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef GLvoid (APIENTRY * glFramebufferTexture3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +typedef GLvoid (APIENTRY * glFramebufferRenderbufferEXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef GLvoid (APIENTRY * glGetFramebufferAttachmentParameterivEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef GLvoid (APIENTRY * glGenerateMipmapEXTPROC) (GLenum target); + +static glIsRenderbufferEXTPROC glIsRenderbufferEXT; +static glBindRenderbufferEXTPROC glBindRenderbufferEXT; +static glDeleteRenderbuffersEXTPROC glDeleteRenderbuffersEXT; +static glGenRenderbuffersEXTPROC glGenRenderbuffersEXT; +static glRenderbufferStorageEXTPROC glRenderbufferStorageEXT; +static glGetRenderbufferParameterivEXTPROC glGetRenderbufferParameterivEXT; +static glIsFramebufferEXTPROC glIsFramebufferEXT; +static glBindFramebufferEXTPROC glBindFramebufferEXT; +static glDeleteFramebuffersEXTPROC glDeleteFramebuffersEXT; +static glGenFramebuffersEXTPROC glGenFramebuffersEXT; +static glCheckFramebufferStatusEXTPROC glCheckFramebufferStatusEXT; +static glFramebufferTexture1DEXTPROC glFramebufferTexture1DEXT; +static glFramebufferTexture2DEXTPROC glFramebufferTexture2DEXT; +static glFramebufferTexture3DEXTPROC glFramebufferTexture3DEXT; +static glFramebufferRenderbufferEXTPROC glFramebufferRenderbufferEXT; +static glGetFramebufferAttachmentParameterivEXTPROC glGetFramebufferAttachmentParameterivEXT; +static glGenerateMipmapEXTPROC glGenerateMipmapEXT; + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glIsRenderbufferEXT + */ +static jboolean JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glIsRenderbufferEXT + (JNIEnv * env, jclass clazz, jint renderbuffer) +{ + return glIsRenderbufferEXT(renderbuffer); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glBindRenderbufferEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glBindRenderbufferEXT + (JNIEnv * env, jclass clazz, jint target, jint renderbuffer) +{ + glBindRenderbufferEXT(target, renderbuffer); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: nglDeleteRenderbuffersEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_nglDeleteRenderbuffersEXT + (JNIEnv * env, jclass clazz, jint n, jobject renderbuffers, jint offset) +{ + const GLuint *address = (const GLuint *)(*env)->GetDirectBufferAddress(env, renderbuffers) + offset; + glDeleteRenderbuffersEXT(n, address); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: nglGenRenderbuffersEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_nglGenRenderbuffersEXT + (JNIEnv * env, jclass clazz, jint n, jobject renderbuffers, jint offset) +{ + GLuint *address = (GLuint *)(*env)->GetDirectBufferAddress(env, renderbuffers) + offset; + glGenRenderbuffersEXT(n, address); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glRenderbufferStorageEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glRenderbufferStorageEXT + (JNIEnv * env, jclass clazz, jint target, jint internalformat, jint width, jint height) +{ + glRenderbufferStorageEXT(target, internalformat, width, height); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: nglGetRenderbufferParameterivEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_nglGetRenderbufferParameterivEXT + (JNIEnv * env, jclass clazz, jint target, jint pname, jobject params, jint offset) +{ + GLint *address = (GLint *)(*env)->GetDirectBufferAddress(env, params) + offset; + glGetRenderbufferParameterivEXT(target, pname, address); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glIsFramebufferEXT + */ +static jboolean JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glIsFramebufferEXT + (JNIEnv * env, jclass clazz, jint framebuffer) +{ + return glIsFramebufferEXT(framebuffer); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glBindFramebufferEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glBindFramebufferEXT + (JNIEnv * env, jclass clazz, jint target, jint framebuffer) +{ + glBindFramebufferEXT(target, framebuffer); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: nglDeleteFramebuffersEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_nglDeleteFramebuffersEXT + (JNIEnv * env, jclass clazz, jint n, jobject framebuffers, jint offset) +{ + const GLuint *address = (const GLuint *)(*env)->GetDirectBufferAddress(env, framebuffers) + offset; + glDeleteFramebuffersEXT(n, address); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: nglGenFramebuffersEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_nglGenFramebuffersEXT + (JNIEnv * env, jclass clazz, jint n, jobject framebuffers, jint offset) +{ + GLuint *address = (GLuint *)(*env)->GetDirectBufferAddress(env, framebuffers) + offset; + glGenFramebuffersEXT(n, address); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glCheckFramebufferStatusEXT + */ +static jint JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glCheckFramebufferStatusEXT + (JNIEnv * env, jclass clazz, jint target) +{ + return glCheckFramebufferStatusEXT(target); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glFramebufferTexture1DEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glFramebufferTexture1DEXT + (JNIEnv * env, jclass clazz, jint target, jint attachment, jint textarget, jint texture, jint level) +{ + glFramebufferTexture1DEXT(target, attachment, textarget, texture, level); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glFramebufferTexture2DEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glFramebufferTexture2DEXT + (JNIEnv * env, jclass clazz, jint target, jint attachment, jint textarget, jint texture, jint level) +{ + glFramebufferTexture2DEXT(target, attachment, textarget, texture, level); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glFramebufferTexture3DEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glFramebufferTexture3DEXT + (JNIEnv * env, jclass clazz, jint target, jint attachment, jint textarget, jint texture, jint level, jint zoffset) +{ + glFramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glFramebufferRenderbufferEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glFramebufferRenderbufferEXT + (JNIEnv * env, jclass clazz, jint target, jint attachment, jint renderbuffertarget, jint renderbuffer) +{ + glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: nglGetFramebufferAttachmentParameterivEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_nglGetFramebufferAttachmentParameterivEXT + (JNIEnv * env, jclass clazz, jint target, jint attachment, jint pname, jobject params, jint offset) +{ + GLint *address = (GLint *)(*env)->GetDirectBufferAddress(env, params) + offset; + glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, address); +} + +/* + * Class: org.lwjgl.opengl.EXTFramebufferObject + * Method: glGenerateMipmapEXT + */ +static void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_glGenerateMipmapEXT + (JNIEnv * env, jclass clazz, jint target) +{ + glGenerateMipmapEXT(target); +} + +#ifdef __cplusplus +extern "C" { +#endif +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_EXTFramebufferObject_initNativeStubs(JNIEnv *env, jclass clazz) { + JavaMethodAndExtFunction functions[] = { + {"glIsRenderbufferEXT", "(I)Z", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glIsRenderbufferEXT, "glIsRenderbufferEXT", (void*)&glIsRenderbufferEXT}, + {"glBindRenderbufferEXT", "(II)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glBindRenderbufferEXT, "glBindRenderbufferEXT", (void*)&glBindRenderbufferEXT}, + {"nglDeleteRenderbuffersEXT", "(ILjava/nio/IntBuffer;I)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_nglDeleteRenderbuffersEXT, "glDeleteRenderbuffersEXT", (void*)&glDeleteRenderbuffersEXT}, + {"nglGenRenderbuffersEXT", "(ILjava/nio/IntBuffer;I)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_nglGenRenderbuffersEXT, "glGenRenderbuffersEXT", (void*)&glGenRenderbuffersEXT}, + {"glRenderbufferStorageEXT", "(IIII)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glRenderbufferStorageEXT, "glRenderbufferStorageEXT", (void*)&glRenderbufferStorageEXT}, + {"nglGetRenderbufferParameterivEXT", "(IILjava/nio/IntBuffer;I)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_nglGetRenderbufferParameterivEXT, "glGetRenderbufferParameterivEXT", (void*)&glGetRenderbufferParameterivEXT}, + {"glIsFramebufferEXT", "(I)Z", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glIsFramebufferEXT, "glIsFramebufferEXT", (void*)&glIsFramebufferEXT}, + {"glBindFramebufferEXT", "(II)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glBindFramebufferEXT, "glBindFramebufferEXT", (void*)&glBindFramebufferEXT}, + {"nglDeleteFramebuffersEXT", "(ILjava/nio/IntBuffer;I)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_nglDeleteFramebuffersEXT, "glDeleteFramebuffersEXT", (void*)&glDeleteFramebuffersEXT}, + {"nglGenFramebuffersEXT", "(ILjava/nio/IntBuffer;I)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_nglGenFramebuffersEXT, "glGenFramebuffersEXT", (void*)&glGenFramebuffersEXT}, + {"glCheckFramebufferStatusEXT", "(I)I", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glCheckFramebufferStatusEXT, "glCheckFramebufferStatusEXT", (void*)&glCheckFramebufferStatusEXT}, + {"glFramebufferTexture1DEXT", "(IIIII)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glFramebufferTexture1DEXT, "glFramebufferTexture1DEXT", (void*)&glFramebufferTexture1DEXT}, + {"glFramebufferTexture2DEXT", "(IIIII)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glFramebufferTexture2DEXT, "glFramebufferTexture2DEXT", (void*)&glFramebufferTexture2DEXT}, + {"glFramebufferTexture3DEXT", "(IIIIII)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glFramebufferTexture3DEXT, "glFramebufferTexture3DEXT", (void*)&glFramebufferTexture3DEXT}, + {"glFramebufferRenderbufferEXT", "(IIII)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glFramebufferRenderbufferEXT, "glFramebufferRenderbufferEXT", (void*)&glFramebufferRenderbufferEXT}, + {"nglGetFramebufferAttachmentParameterivEXT", "(IIILjava/nio/IntBuffer;I)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_nglGetFramebufferAttachmentParameterivEXT, "glGetFramebufferAttachmentParameterivEXT", (void*)&glGetFramebufferAttachmentParameterivEXT}, + {"glGenerateMipmapEXT", "(I)V", (void*)&Java_org_lwjgl_opengl_EXTFramebufferObject_glGenerateMipmapEXT, "glGenerateMipmapEXT", (void*)&glGenerateMipmapEXT} + }; + int num_functions = NUMFUNCTIONS(functions); + extgl_InitializeClass(env, clazz, num_functions, functions); +} +#ifdef __cplusplus +} +#endif \ No newline at end of file