diff --git a/src/java/org/lwjgl/Sys.java b/src/java/org/lwjgl/Sys.java index a41db991..bdaa9381 100644 --- a/src/java/org/lwjgl/Sys.java +++ b/src/java/org/lwjgl/Sys.java @@ -127,13 +127,30 @@ public final class Sys { private static void initialize() { System.loadLibrary(LIBRARY_NAME); setTime(0); - } + } /** * Gets the native NULL constant value */ private static native ByteBuffer nGetNULLValue(); + /** + * Create a buffer representing an index into a ARB_vertex_buffer_object buffer. + * + * Example: + * + * ByteBuffer b = Sys.createARBVBOBuffer(0); + * gl.glVertexPointer(3, GL.GL_INT, 0, b); + * + * is equivalent to the C call: + * + * glVertexPointer(3, GL.GL_INT, 0, 0); + * + * @param index The VBO index to represent + * @return a ByteBuffer representing the VBO index + */ + public static native ByteBuffer createARBVBOBuffer(int index); + /** * Obtains the number of ticks that the hires timer does in a second. * diff --git a/src/native/common/org_lwjgl_Sys.h b/src/native/common/org_lwjgl_Sys.h index 30361e6a..6c4b1b5f 100644 --- a/src/native/common/org_lwjgl_Sys.h +++ b/src/native/common/org_lwjgl_Sys.h @@ -29,6 +29,14 @@ extern "C" { JNIEXPORT jobject JNICALL Java_org_lwjgl_Sys_nGetNULLValue (JNIEnv *, jclass); +/* + * Class: org_lwjgl_Sys + * Method: createARBVBOBuffer + * Signature: (I)Ljava/nio/ByteBuffer; + */ +JNIEXPORT jobject JNICALL Java_org_lwjgl_Sys_createARBVBOBuffer + (JNIEnv *, jclass, jint); + /* * Class: org_lwjgl_Sys * Method: getTimerResolution diff --git a/src/native/configure.in b/src/native/configure.in index 10bb5981..2634541a 100644 --- a/src/native/configure.in +++ b/src/native/configure.in @@ -51,8 +51,8 @@ if test "x$JAVA_HOME" = x; then else AC_MSG_RESULT($JAVA_HOME) JAVA_HOME="$JAVA_HOME" - CPPFLAGS="$CPPFLAGS -D_DEBUG -fno-rtti -fno-exceptions -pthread -D_X11 -Wall -I$JAVA_HOME/include -I$JAVA_HOME/include/linux" - CFLAGS="$CFLAGS -D_DEBUG -pthread -D_X11 -Wall -I$JAVA_HOME/include -I$JAVA_HOME/include/linux" + CPPFLAGS="$CPPFLAGS -fno-rtti -fno-exceptions -pthread -D_X11 -Wall -I$JAVA_HOME/include -I$JAVA_HOME/include/linux" + CFLAGS="$CFLAGS -pthread -D_X11 -Wall -I$JAVA_HOME/include -I$JAVA_HOME/include/linux" fi dnl Checks for libraries. diff --git a/src/native/linux/org_lwjgl_Sys.cpp b/src/native/linux/org_lwjgl_Sys.cpp index ed3b4eff..5acd8fa6 100644 --- a/src/native/linux/org_lwjgl_Sys.cpp +++ b/src/native/linux/org_lwjgl_Sys.cpp @@ -58,6 +58,17 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_Sys_nGetNULLValue { return env->NewDirectByteBuffer(NULL, 0); } + +/* + * Class: org_lwjgl_Sys + * Method: createARBVBOBuffer + * Signature: (I)Ljava/nio/ByteBuffer; + */ +JNIEXPORT jobject JNICALL Java_org_lwjgl_Sys_createARBVBOBuffer + (JNIEnv *env, jclass clazz, jint address) +{ + return env->NewDirectByteBuffer((void *)address, 0); +} /* * Class: org_lwjgl_Sys diff --git a/src/native/win32/org_lwjgl_Sys.cpp b/src/native/win32/org_lwjgl_Sys.cpp index bb81e308..8085c81f 100644 --- a/src/native/win32/org_lwjgl_Sys.cpp +++ b/src/native/win32/org_lwjgl_Sys.cpp @@ -60,6 +60,17 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_Sys_nGetNULLValue return env->NewDirectByteBuffer(NULL, 0); } +/* + * Class: org_lwjgl_Sys + * Method: createARBVBOBuffer + * Signature: (I)Ljava/nio/ByteBuffer; + */ +JNIEXPORT jobject JNICALL Java_org_lwjgl_Sys_createARBVBOBuffer + (JNIEnv *env, jclass clazz, jint address) +{ + return env->NewDirectByteBuffer((void *)address, 0); +} + /* * Class: org_lwjgl_Sys * Method: getTimerResolution