diff --git a/src/java/org/lwjgl/opengl/GLCaps.java b/src/java/org/lwjgl/opengl/GLCaps.java index 01c86d25..6094dea8 100644 --- a/src/java/org/lwjgl/opengl/GLCaps.java +++ b/src/java/org/lwjgl/opengl/GLCaps.java @@ -36,7 +36,8 @@ import org.lwjgl.Sys; import java.lang.reflect.*; import java.lang.reflect.Field; import java.util.HashMap; -import java.util.StringTokenizer; +import java.util.HashSet; +import java.util.Iterator; /** * $Id$ @@ -137,7 +138,6 @@ public abstract class GLCaps { public static boolean GL_SGIS_generate_mipmap; public static boolean GL_SGIX_shadow; public static boolean GL_SGIX_depth_texture; - public static boolean OpenGL10; public static boolean OpenGL11; public static boolean OpenGL12; public static boolean OpenGL13; @@ -158,10 +158,13 @@ public abstract class GLCaps { System.loadLibrary(Sys.getLibraryName()); } - private static void setExtensionFields(String exts, HashMap field_map) { - StringTokenizer st = new StringTokenizer(exts); - while (st.hasMoreTokens()) { - String ext = st.nextToken(); + private static void setExtensionFields(HashSet exts, HashMap field_map) { + if(org.lwjgl.Sys.DEBUG) { + System.out.println("Available extensions:"); + } + Iterator it = exts.iterator(); + while (it.hasNext()) { + String ext = (String)it.next(); if(org.lwjgl.Sys.DEBUG) { System.out.println(ext); } @@ -182,8 +185,7 @@ public abstract class GLCaps { * Determine which extensions are available. Use this to initialize capability fields. * Can only be called _after_ a GLWindow or Pbuffer has been created. */ - public static void determineAvailableExtensions() { - + public static void determineAvailableExtensions(HashSet exts) { // Grab all the public static booleans out of this class Field[] fields = GLCaps.class.getDeclaredFields(); HashMap map = new HashMap(fields.length); @@ -200,67 +202,6 @@ public abstract class GLCaps { } } - determineAvailableWGLExtensions(map); - String exts = CoreGL11.glGetString(CoreGL11.GL_EXTENSIONS); - if(org.lwjgl.Sys.DEBUG) { - System.out.println("Available GL extensions:"); - } setExtensionFields(exts, map); - - // Let's see what openGL version we are too: - String version = CoreGL11.glGetString(CoreGL11.GL_VERSION); - int i = version.indexOf("1."); - if (i > -1) { - char c = version.charAt(i + 2); - // Each case intentionally falls through! - switch (c) { - case '4': - OpenGL14 = true; - case '3': - OpenGL13 = true; - case '2': - OpenGL12 = true; - case '1': - OpenGL11 = true; - case '0': - OpenGL10 = true; - break ; - default: - // Unexpected character - ignore - } - } - } - - private static native boolean isWGLEXTExtensionsStringAvailable(); - - private static native boolean isWGLARBExtensionsStringAvailable(); - - /** - * Determine which WGL extensions are available - */ - private static void determineAvailableWGLExtensions(HashMap field_map) { - - // First we must determine if WGL_EXT_extensions_string is available - WGL_ARB_extensions_string = isWGLARBExtensionsStringAvailable(); - WGL_EXT_extensions_string = isWGLEXTExtensionsStringAvailable(); - if (!WGL_EXT_extensions_string && !WGL_ARB_extensions_string) - return; - final String exts; - - if (WGL_ARB_extensions_string) - exts = GL.wglGetExtensionsStringARB(); - // Remember - this is an HWND not an HDC, which is what's required. The native - // code on the other side of wglGetExtensionsStringARB gets the HDC from the HWND - // behind the scenes. - else - exts = GL.wglGetExtensionsStringEXT(); - - if (exts == null) - return; - - if(org.lwjgl.Sys.DEBUG) { - System.out.println("Available WGL extensions:"); - } - setExtensionFields(exts, field_map); } } diff --git a/src/java/org/lwjgl/opengl/Window.java b/src/java/org/lwjgl/opengl/Window.java index a1ed4c4e..4d058e7f 100644 --- a/src/java/org/lwjgl/opengl/Window.java +++ b/src/java/org/lwjgl/opengl/Window.java @@ -24,6 +24,8 @@ package org.lwjgl.opengl; import org.lwjgl.Display; import org.lwjgl.Sys; +import java.util.HashSet; + public final class Window { static { @@ -119,13 +121,13 @@ public final class Window { return title; } - /** - * @return whether this window is in fullscreen mode - */ - public static boolean isFullscreen() { - assert isCreated() : "Cannot determine state of uncreated window"; - return fullscreen; - } + /** + * @return whether this window is in fullscreen mode + */ + public static boolean isFullscreen() { + assert isCreated() : "Cannot determine state of uncreated window"; + return fullscreen; + } /** * Set the title of the window. This may be ignored by the underlying OS. @@ -298,11 +300,14 @@ public final class Window { int bpp, int alpha, int depth, - int stencil) + int stencil, + HashSet extensions) throws Exception; private static void createWindow() throws Exception { - nCreate(title, x, y, width, height, fullscreen, color, alpha, depth, stencil); + HashSet extensions = new HashSet(); + nCreate(title, x, y, width, height, fullscreen, color, alpha, depth, stencil, extensions); + GLCaps.determineAvailableExtensions(extensions); created = true; } diff --git a/src/java/org/lwjgl/test/input/HWCursorTest.java b/src/java/org/lwjgl/test/input/HWCursorTest.java index 782b609c..6fcaf1bd 100644 --- a/src/java/org/lwjgl/test/input/HWCursorTest.java +++ b/src/java/org/lwjgl/test/input/HWCursorTest.java @@ -337,7 +337,6 @@ public class HWCursorTest { GL.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //sync frame (only works on windows) - GLCaps.determineAvailableExtensions(); if (GLCaps.WGL_EXT_swap_control) { GL.wglSwapIntervalEXT(1); } diff --git a/src/java/org/lwjgl/test/opengl/FullScreenWindowedTest.java b/src/java/org/lwjgl/test/opengl/FullScreenWindowedTest.java index 2ba18607..0ec82694 100644 --- a/src/java/org/lwjgl/test/opengl/FullScreenWindowedTest.java +++ b/src/java/org/lwjgl/test/opengl/FullScreenWindowedTest.java @@ -315,7 +315,6 @@ public class FullScreenWindowedTest { GL.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //sync frame (only works on windows) - GLCaps.determineAvailableExtensions(); if (GLCaps.WGL_EXT_swap_control) { GL.wglSwapIntervalEXT(1); } diff --git a/src/java/org/lwjgl/test/opengl/Grass.java b/src/java/org/lwjgl/test/opengl/Grass.java index 77880a7f..525e45d6 100644 --- a/src/java/org/lwjgl/test/opengl/Grass.java +++ b/src/java/org/lwjgl/test/opengl/Grass.java @@ -129,7 +129,6 @@ public class Grass { public static void main(String[] args) { ByteBuffer byte_buf = ByteBuffer.allocateDirect(4); byte_buf.order(ByteOrder.nativeOrder()); - GLCaps.determineAvailableExtensions(); System.out.println("Vertex program supported: " + GLCaps.GL_NV_vertex_program); GL.glGenProgramsNV(byte_buf.asIntBuffer()); IntBuffer int_buf = byte_buf.asIntBuffer(); diff --git a/src/java/org/lwjgl/test/opengl/PbufferTest.java b/src/java/org/lwjgl/test/opengl/PbufferTest.java index 63d26833..e839a9c9 100644 --- a/src/java/org/lwjgl/test/opengl/PbufferTest.java +++ b/src/java/org/lwjgl/test/opengl/PbufferTest.java @@ -386,7 +386,6 @@ public class PbufferTest { */ private void glInit() { //sync frame (only works on windows) - GLCaps.determineAvailableExtensions(); if (GLCaps.WGL_EXT_swap_control) { GL.wglSwapIntervalEXT(1); } diff --git a/src/java/org/lwjgl/test/opengl/VBOIndexTest.java b/src/java/org/lwjgl/test/opengl/VBOIndexTest.java index de47453e..3b5cebca 100644 --- a/src/java/org/lwjgl/test/opengl/VBOIndexTest.java +++ b/src/java/org/lwjgl/test/opengl/VBOIndexTest.java @@ -189,7 +189,6 @@ public final class VBOIndexTest { Sys.setProcessPriority(Sys.HIGH_PRIORITY); System.out.println("Timer resolution: " + Sys.getTimerResolution()); // Go into orthographic projection mode. - GLCaps.determineAvailableExtensions(); GL.glMatrixMode(GL.GL_PROJECTION); GL.glLoadIdentity(); GLU.gluOrtho2D(0, Display.getWidth(), 0, Display.getHeight()); diff --git a/src/java/org/lwjgl/test/opengl/VBOTest.java b/src/java/org/lwjgl/test/opengl/VBOTest.java index 87ebe85d..b7010e68 100644 --- a/src/java/org/lwjgl/test/opengl/VBOTest.java +++ b/src/java/org/lwjgl/test/opengl/VBOTest.java @@ -173,7 +173,6 @@ public final class VBOTest { Sys.setProcessPriority(Sys.HIGH_PRIORITY); System.out.println("Timer resolution: " + Sys.getTimerResolution()); // Go into orthographic projection mode. - GLCaps.determineAvailableExtensions(); GL.glMatrixMode(GL.GL_PROJECTION); GL.glLoadIdentity(); GLU.gluOrtho2D(0, Display.getWidth(), 0, Display.getHeight()); diff --git a/src/native/common/Makefile.am b/src/native/common/Makefile.am index 3346a179..d587d188 100644 --- a/src/native/common/Makefile.am +++ b/src/native/common/Makefile.am @@ -5,7 +5,7 @@ libcommon_la_SOURCES = $(COMMON) COMMON = \ extal.cpp \ extal.h \ - extgl.c \ + extgl.cpp \ extgl.h \ org_lwjgl_Display.h \ org_lwjgl_Sys.h \ diff --git a/src/native/common/extgl.c b/src/native/common/extgl.cpp old mode 100644 new mode 100755 similarity index 85% rename from src/native/common/extgl.c rename to src/native/common/extgl.cpp index a80f7e24..beff33ac --- a/src/native/common/extgl.c +++ b/src/native/common/extgl.cpp @@ -495,65 +495,49 @@ glViewportPROC glViewport = NULL; /* WGL_EXT_etxension_string */ -#ifdef WGL_EXT_extensions_string wglGetExtensionsStringEXTPROC wglGetExtensionsStringEXT = NULL; -#endif /* WGL_EXT_extension_string */ /* WGL_ARB_buffer_region */ -#ifdef WGL_ARB_buffer_region wglCreateBufferRegionARBPROC wglCreateBufferRegionARB = NULL; wglDeleteBufferRegionARBPROC wglDeleteBufferRegionARB = NULL; wglSaveBufferRegionARBPROC wglSaveBufferRegionARB = NULL; wglRestoreBufferRegionARBPROC wglRestoreBufferRegionARB = NULL; -#endif /* WGL_ARB_buffer_region */ /* WGL_ARB_extension_string */ -#ifdef WGL_ARB_extensions_string wglGetExtensionsStringARBPROC wglGetExtensionsStringARB = NULL; -#endif /* WGL_ARB_extension_string */ /* WGL_ARB_pbuffer */ -#ifdef WGL_ARB_pbuffer wglCreatePbufferARBPROC wglCreatePbufferARB = NULL; wglGetPbufferDCARBPROC wglGetPbufferDCARB = NULL; wglReleasePbufferDCARBPROC wglReleasePbufferDCARB = NULL; wglDestroyPbufferARBPROC wglDestroyPbufferARB = NULL; wglQueryPbufferARBPROC wglQueryPbufferARB = NULL; -#endif /* WGL_ARB_pbuffer */ /* WGL_ARB_pixel_format */ -#ifdef WGL_ARB_pixel_format wglGetPixelFormatAttribivARBPROC wglGetPixelFormatAttribivARB = NULL; wglGetPixelFormatAttribfvARBPROC wglGetPixelFormatAttribfvARB = NULL; wglChoosePixelFormatARBPROC wglChoosePixelFormatARB = NULL; -#endif /* WGL_ARB_pixel_format */ /* WGL_ARB_render_texture */ -#ifdef WGL_ARB_render_texture wglBindTexImageARBPROC wglBindTexImageARB = NULL; wglReleaseTexImageARBPROC wglReleaseTexImageARB = NULL; wglSetPbufferAttribARBPROC wglSetPbufferAttribARB = NULL; -#endif /* WGL_ARB_render_texture */ /* WGL_EXT_swap_control */ -#ifdef WGL_EXT_swap_control wglSwapIntervalEXTPROC wglSwapIntervalEXT = NULL; wglGetSwapIntervalEXTPROC wglGetSwapIntervalEXT = NULL; -#endif /* WGL_EXT_swap_control */ /* WGL_ARB_make_current_read */ -#ifdef WGL_ARB_make_current_read wglMakeContextCurrentARBPROC wglMakeContextCurrentARB = NULL; wglGetCurrentReadDCARBPROC wglGetCurrentReadDCARB = NULL; -#endif /* WGL_ARB_make_current_read*/ /* VAR */ @@ -564,14 +548,11 @@ wglGetCurrentReadDCARBPROC wglGetCurrentReadDCARB = NULL; /*-------------------------------------*/ -#ifdef GL_VERSION_1_2 glDrawRangeElementsPROC glDrawRangeElements = NULL; glTexImage3DPROC glTexImage3D = NULL; glTexSubImage3DPROC glTexSubImage3D = NULL; glCopyTexSubImage3DPROC glCopyTexSubImage3D = NULL; -#endif /* GL_VERSION_1_2 */ -#ifdef GL_ARB_imaging glBlendColorPROC glBlendColor = NULL; glBlendEquationPROC glBlendEquation = NULL; glColorTablePROC glColorTable = NULL; @@ -606,11 +587,9 @@ glHistogramPROC glHistogram = NULL; glMinmaxPROC glMinmax = NULL; glResetHistogramPROC glResetHistogram = NULL; glResetMinmaxPROC glResetMinmax = NULL; -#endif /* GL_ARB_imaging */ /* 1.3 */ -#ifdef GL_VERSION_1_3 glActiveTexturePROC glActiveTexture = NULL; glClientActiveTexturePROC glClientActiveTexture = NULL; glMultiTexCoord1dPROC glMultiTexCoord1d = NULL; @@ -657,11 +636,9 @@ glCompressedTexSubImage2DPROC glCompressedTexSubImage2D = NULL; glCompressedTexSubImage1DPROC glCompressedTexSubImage1D = NULL; glGetCompressedTexImagePROC glGetCompressedTexImage = NULL; glSampleCoveragePROC glSampleCoverage = NULL; -#endif /* GL_VERSION_1_3 */ /* ARB_multitexture */ -#ifdef GL_ARB_multitexture glActiveTextureARBPROC glActiveTextureARB = NULL; glClientActiveTextureARBPROC glClientActiveTextureARB = NULL; glMultiTexCoord1dARBPROC glMultiTexCoord1dARB = NULL; @@ -696,20 +673,16 @@ glMultiTexCoord4iARBPROC glMultiTexCoord4iARB = NULL; glMultiTexCoord4ivARBPROC glMultiTexCoord4ivARB = NULL; glMultiTexCoord4sARBPROC glMultiTexCoord4sARB = NULL; glMultiTexCoord4svARBPROC glMultiTexCoord4svARB = NULL; -#endif /* GL_ARB_multitexture */ /* ARB_transpose_matrix */ -#ifdef GL_ARB_transpose_matrix glLoadTransposeMatrixfARBPROC glLoadTransposeMatrixfARB = NULL; glLoadTransposeMatrixdARBPROC glLoadTransposeMatrixdARB = NULL; glMultTransposeMatrixfARBPROC glMultTransposeMatrixfARB = NULL; glMultTransposeMatrixdARBPROC glMultTransposeMatrixdARB = NULL; -#endif /* GL_ARB_transpose_matrix */ /* ARB_texture_compression */ -#ifdef GL_ARB_texture_compression glCompressedTexImage3DARBPROC glCompressedTexImage3DARB = NULL; glCompressedTexImage2DARBPROC glCompressedTexImage2DARB = NULL; glCompressedTexImage1DARBPROC glCompressedTexImage1DARB = NULL; @@ -717,11 +690,9 @@ glCompressedTexSubImage3DARBPROC glCompressedTexSubImage3DARB = NULL; glCompressedTexSubImage2DARBPROC glCompressedTexSubImage2DARB = NULL; glCompressedTexSubImage1DARBPROC glCompressedTexSubImage1DARB = NULL; glGetCompressedTexImageARBPROC glGetCompressedTexImageARB = NULL; -#endif /* GL_ARB_texture_compression */ /* EXT_secondary_color */ -#ifdef GL_EXT_secondary_color glSecondaryColor3bEXTPROC glSecondaryColor3bEXT = NULL; glSecondaryColor3bvEXTPROC glSecondaryColor3bvEXT = NULL; glSecondaryColor3dEXTPROC glSecondaryColor3dEXT = NULL; @@ -739,28 +710,22 @@ glSecondaryColor3uivEXTPROC glSecondaryColor3uivEXT = NULL; glSecondaryColor3usEXTPROC glSecondaryColor3usEXT = NULL; glSecondaryColor3usvEXTPROC glSecondaryColor3usvEXT = NULL; glSecondaryColorPointerEXTPROC glSecondaryColorPointerEXT = NULL; -#endif /* GL_EXT_secondary_color */ /* EXT_compiled_vertex_array */ -#ifdef GL_EXT_compiled_vertex_array glLockArraysEXTPROC glLockArraysEXT = NULL; glUnlockArraysEXTPROC glUnlockArraysEXT = NULL; -#endif /* GL_EXT_compiled_vertex_array */ /* EXT_fog_coord */ -#ifdef GL_EXT_fog_coord glFogCoordfEXTPROC glFogCoordfEXT = NULL; glFogCoordfvEXTPROC glFogCoordfvEXT = NULL; glFogCoorddEXTPROC glFogCoorddEXT = NULL; glFogCoorddvEXTPROC glFogCoorddvEXT = NULL; glFogCoordPointerEXTPROC glFogCoordPointerEXT = NULL; -#endif /* GL_EXT_for_color */ /* NV_vertex_array_range */ -#ifdef GL_NV_vertex_array_range glFlushVertexArrayRangeNVPROC glFlushVertexArrayRangeNV = NULL; glVertexArrayRangeNVPROC glVertexArrayRangeNV = NULL; @@ -778,18 +743,13 @@ glXFreeMemoryNVPROC glXFreeMemoryNV = NULL; // TODO: find the OSX equivalent of these functions #endif /* _AGL */ -#endif /* GL_NV_vertex_array_range */ - /* EXT_point_parameters */ -#ifdef GL_EXT_point_parameters glPointParameterfEXTPROC glPointParameterfEXT = NULL; glPointParameterfvEXTPROC glPointParameterfvEXT = NULL; -#endif /* GL_EXT_point_parameters */ /* NV_register_combiners */ -#ifdef GL_NV_register_combiners glCombinerParameterfvNVPROC glCombinerParameterfvNV = NULL; glCombinerParameterfNVPROC glCombinerParameterfNV = NULL; glCombinerParameterivNVPROC glCombinerParameterivNV = NULL; @@ -803,11 +763,9 @@ glGetCombinerOutputParameterfvNVPROC glGetCombinerOutputParameterfvNV = NULL; glGetCombinerOutputParameterivNVPROC glGetCombinerOutputParameterivNV = NULL; glGetFinalCombinerInputParameterfvNVPROC glGetFinalCombinerInputParameterfvNV = NULL; glGetFinalCombinerInputParameterivNVPROC glGetFinalCombinerInputParameterivNV = NULL; -#endif /* GL_NV_register_combiners */ /* ARB_vertex_buffer_object */ -#ifdef GL_ARB_vertex_buffer_object glBindBufferARBPROC glBindBufferARB = NULL; glDeleteBuffersARBPROC glDeleteBuffersARB = NULL; glGenBuffersARBPROC glGenBuffersARB = NULL; @@ -819,24 +777,18 @@ glMapBufferARBPROC glMapBufferARB = NULL; glUnmapBufferARBPROC glUnmapBufferARB = NULL; glGetBufferParameterivARBPROC glGetBufferParameterivARB = NULL; glGetBufferPointervARBPROC glGetBufferPointervARB = NULL; -#endif /* GL_ARB_vertex_buffer_object */ /* ARB_vertex_buffer_object */ -#ifdef GL_ARB_multisample glSampleCoverageARBPROC glSampleCoverageARB = NULL; -#endif /* GL_ARB_multisample */ /* EXT_vertex_weighting */ -#ifdef GL_EXT_vertex_weighting glVertexWeightfEXTPROC glVertexWeightfEXT = NULL; glVertexWeightfvEXTPROC glVertexWeightfvEXT = NULL; glVertexWeightPointerEXTPROC glVertexWeightPointerEXT = NULL; -#endif /* GL_EXT_vertex_weighting */ /* NV_vertex_program */ -#ifdef GL_NV_vertex_program glBindProgramNVPROC glBindProgramNV = NULL; glDeleteProgramsNVPROC glDeleteProgramsNV = NULL; glExecuteProgramNVPROC glExecuteProgramNV = NULL; @@ -901,11 +853,9 @@ glVertexAttribs4svNVPROC glVertexAttribs4svNV = NULL; glVertexAttribs4fvNVPROC glVertexAttribs4fvNV = NULL; glVertexAttribs4dvNVPROC glVertexAttribs4dvNV = NULL; glVertexAttribs4ubvNVPROC glVertexAttribs4ubvNV = NULL; -#endif /* GL_NV_vertex_program */ /* NV_fence */ -#ifdef GL_NV_fence glGenFencesNVPROC glGenFencesNV = NULL; glDeleteFencesNVPROC glDeleteFencesNV = NULL; glSetFenceNVPROC glSetFenceNV = NULL; @@ -913,18 +863,14 @@ glTestFenceNVPROC glTestFenceNV = NULL; glFinishFenceNVPROC glFinishFenceNV = NULL; glIsFenceNVPROC glIsFenceNV = NULL; glGetFenceivNVPROC glGetFenceivNV = NULL; -#endif /* GL_NV_fence */ /* NV_register_combiners2 */ -#ifdef GL_NV_register_combiners2 glCombinerStageParameterfvNVPROC glCombinerStageParameterfvNV = NULL; glGetCombinerStageParameterfvNVPROC glGetCombinerStageParameterfvNV = NULL; -#endif /* GL_NV_register_combiners2 */ /* NV_evaluators */ -#ifdef GL_NV_evaluators glMapControlPointsNVPROC glMapControlPointsNV = NULL; glMapParameterivNVPROC glMapParameterivNV = NULL; glMapParameterfvNVPROC glMapParameterfvNV = NULL; @@ -934,32 +880,24 @@ glGetMapParameterfvNVPROC glGetMapParameterfvNV = NULL; glGetMapAttribParameterivNVPROC glGetMapAttribParameterivNV = NULL; glGetMapAttribParameterfvNVPROC glGetMapAttribParameterfvNV = NULL; glEvalMapsNVPROC glEvalMapsNV = NULL; -#endif /* GL_NV_evaluators */ /* ATI_separate_stencil */ -#ifdef GL_ATI_separate_stencil glStencilOpSeparateATIPROC glStencilOpSeparateATI = NULL; glStencilFuncSeparateATIPROC glStencilFuncSeparateATI = NULL; -#endif /* GL_ATI_separate_stencil */ /* ATI_pn_triangles */ -#ifdef GL_ATI_pn_triangles glPNTrianglesiATIPROC glPNTrianglesiATI = NULL; glPNTrianglesfATIPROC glPNTrianglesfATI = NULL; -#endif /* GL_ATI_pn_triangles */ /* ARB_point_parameters */ -#ifdef GL_ARB_point_parameters glPointParameterfARBPROC glPointParameterfARB = NULL; glPointParameterfvARBPROC glPointParameterfvARB = NULL; -#endif /* GL_ABR_point_parameters */ /* ARB_vertex_blend */ -#ifdef GL_ARB_vertex_blend glWeightbvARBPROC glWeightbvARB = NULL; glWeightsvARBPROC glWeightsvARB = NULL; glWeightivARBPROC glWeightivARB = NULL; @@ -970,28 +908,22 @@ glWeightusvARBPROC glWeightusvARB = NULL; glWeightuivARBPROC glWeightuivARB = NULL; glWeightPointerARBPROC glWeightPointerARB = NULL; glVertexBlendARBPROC glVertexBlendARB = NULL; -#endif /* GL_ARB_vertex_blend */ /* EXT_multi_draw_arrays */ -#ifdef GL_EXT_multi_draw_arrays glMultiDrawArraysEXTPROC glMultiDrawArraysEXT = NULL; glMultiDrawElementsEXTPROC glMultiDrawElementsEXT = NULL; -#endif /* GL_EXT_multi_draw_arrays */ /* ARB_matrix_palette */ -#ifdef GL_ARB_matrix_palette glCurrentPaletteMatrixARBPROC glCurrentPaletteMatrixARB = NULL; glMatrixIndexubvARBPROC glMatrixIndexubvARB = NULL; glMatrixIndexusvARBPROC glMatrixIndexusvARB = NULL; glMatrixIndexuivARBPROC glMatrixIndexuivARB = NULL; glMatrixIndexPointerARBPROC glMatrixIndexPointerARB = NULL; -#endif /* GL_ARB_matrix_palette */ /* EXT_vertex_shader */ -#ifdef GL_EXT_vertex_shader glBeginVertexShaderEXTPROC glBeginVertexShaderEXT = NULL; glEndVertexShaderEXTPROC glEndVertexShaderEXT = NULL; glBindVertexShaderEXTPROC glBindVertexShaderEXT = NULL; @@ -1034,20 +966,16 @@ glGetInvariantFloatvEXTPROC glGetInvariantFloatvEXT = NULL; glGetLocalConstantBooleanvEXTPROC glGetLocalConstantBooleanvEXT = NULL; glGetLocalConstantIntegervEXTPROC glGetLocalConstantIntegervEXT = NULL; glGetLocalConstantFloatvEXTPROC glGetLocalConstantFloatvEXT = NULL; -#endif /* GL_EXT_vertex_shader */ /* ATI_envmap_bumpmap */ -#ifdef GL_ATI_envmap_bumpmap glTexBumpParameterivATIPROC glTexBumpParameterivATI = NULL; glTexBumpParameterfvATIPROC glTexBumpParameterfvATI = NULL; glGetTexBumpParameterivATIPROC glGetTexBumpParameterivATI = NULL; glGetTexBumpParameterfvATIPROC glGetTexBumpParameterfvATI = NULL; -#endif /* GL_ATI_envmap_bumpmap */ /* ATI_fragment_shader */ -#ifdef GL_ATI_fragment_shader glGenFragmentShadersATIPROC glGenFragmentShadersATI = NULL; glBindFragmentShaderATIPROC glBindFragmentShaderATI = NULL; glDeleteFragmentShaderATIPROC glDeleteFragmentShaderATI = NULL; @@ -1062,19 +990,15 @@ glAlphaFragmentOp1ATIPROC glAlphaFragmentOp1ATI = NULL; glAlphaFragmentOp2ATIPROC glAlphaFragmentOp2ATI = NULL; glAlphaFragmentOp3ATIPROC glAlphaFragmentOp3ATI = NULL; glSetFragmentShaderConstantATIPROC glSetFragmentShaderConstantATI = NULL; -#endif /* GL_ATI_fragment_shader */ /* ATI_element_array */ -#ifdef GL_ATI_element_array glElementPointerATIPROC glElementPointerATI = NULL; glDrawElementArrayATIPROC glDrawElementArrayATI = NULL; glDrawRangeElementArrayATIPROC glDrawRangeElementArrayATI = NULL; -#endif /* GL_ATI_element_array */ /* ATI_vertex_streams */ -#ifdef GL_ATI_vertex_streams glClientActiveVertexStreamATIPROC glClientActiveVertexStreamATI = NULL; glVertexBlendEnviATIPROC glVertexBlendEnviATI = NULL; glVertexBlendEnvfATIPROC glVertexBlendEnvfATI = NULL; @@ -1112,11 +1036,9 @@ glNormalStream3fATIPROC glNormalStream3fATI = NULL; glNormalStream3fvATIPROC glNormalStream3fvATI = NULL; glNormalStream3dATIPROC glNormalStream3dATI = NULL; glNormalStream3dvATIPROC glNormalStream3dvATI = NULL; -#endif /* GL_ATI_vertex_streams */ /* ATI_vertex_array_object */ -#ifdef GL_ATI_vertex_array_object glNewObjectBufferATIPROC glNewObjectBufferATI = NULL; glIsObjectBufferATIPROC glIsObjectBufferATI = NULL; glUpdateObjectBufferATIPROC glUpdateObjectBufferATI = NULL; @@ -1129,11 +1051,9 @@ glGetArrayObjectivATIPROC glGetArrayObjectivATI = NULL; glVariantArrayObjectATIPROC glVariantArrayObjectATI = NULL; glGetVariantArrayObjectfvATIPROC glGetVariantArrayObjectfvATI = NULL; glGetVariantArrayObjectivATIPROC glGetVariantArrayObjectivATI = NULL; -#endif /* GL_ATI_vertex_array_object */ /* NV_occlusion_query */ -#ifdef GL_NV_occlusion_query glGenOcclusionQueriesNVPROC glGenOcclusionQueriesNV = NULL; glDeleteOcclusionQueriesNVPROC glDeleteOcclusionQueriesNV = NULL; glIsOcclusionQueryNVPROC glIsOcclusionQueryNV = NULL; @@ -1141,18 +1061,14 @@ glBeginOcclusionQueryNVPROC glBeginOcclusionQueryNV = NULL; glEndOcclusionQueryNVPROC glEndOcclusionQueryNV = NULL; glGetOcclusionQueryivNVPROC glGetOcclusionQueryivNV = NULL; glGetOcclusionQueryuivNVPROC glGetOcclusionQueryuivNV = NULL; -#endif /* GL_NV_occlusion_query */ /* NV_point_sprite */ -#ifdef GL_NV_point_sprite glPointParameteriNVPROC glPointParameteriNV = NULL; glPointParameterivNVPROC glPointParameterivNV = NULL; -#endif /* GL_NV_point_sprite */ /* ARB_window_pos */ -#ifdef GL_ARB_window_pos glWindowPos2dARBPROC glWindowPos2dARB = NULL; glWindowPos2fARBPROC glWindowPos2fARB = NULL; glWindowPos2iARBPROC glWindowPos2iARB = NULL; @@ -1169,23 +1085,17 @@ glWindowPos3dvARBPROC glWindowPos3dvARB = NULL; glWindowPos3fvARBPROC glWindowPos3fvARB = NULL; glWindowPos3ivARBPROC glWindowPos3ivARB = NULL; glWindowPos3svARBPROC glWindowPos3svARB = NULL; -#endif /* GL_ARB_window_pos */ /* EXT_draw_range_elements */ -#ifdef GL_EXT_draw_range_elements glDrawRangeElementsEXTPROC glDrawRangeElementsEXT = NULL; -#endif /* GL_EXT_draw_range_elements */ /* EXT_stencil_two_side */ -#ifdef GL_EXT_stencil_two_side glActiveStencilFaceEXTPROC glActiveStencilFaceEXT = NULL; -#endif /* GL_EXT_stencil_two_side */ /* ARB_vertex_program */ -#ifdef GL_ARB_vertex_program glVertexAttrib1sARBPROC glVertexAttrib1sARB = NULL; glVertexAttrib1fARBPROC glVertexAttrib1fARB = NULL; glVertexAttrib1dARBPROC glVertexAttrib1dARB = NULL; @@ -1233,14 +1143,14 @@ glProgramEnvParameter4dARBPROC glProgramEnvParameter4dARB = NULL; glProgramEnvParameter4dvARBPROC glProgramEnvParameter4dvARB = NULL; glProgramEnvParameter4fARBPROC glProgramEnvParameter4fARB = NULL; glProgramEnvParameter4fvARBPROC glProgramEnvParameter4fvARB = NULL; -glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB = NULL; +/*glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB = NULL; glProgramLocalParameter4dvARBPROC glProgramLocalParameter4dvARB = NULL; glProgramLocalParameter4fARBPROC glProgramLocalParameter4fARB = NULL; -glProgramLocalParameter4fvARBPROC glProgramLocalParameter4fvARB = NULL; +glProgramLocalParameter4fvARBPROC glProgramLocalParameter4fvARB = NULL;*/ glGetProgramEnvParameterdvARBPROC glGetProgramEnvParameterdvARB = NULL; glGetProgramEnvParameterfvARBPROC glGetProgramEnvParameterfvARB = NULL; -glGetProgramLocalParameterdvARBPROC glGetProgramLocalParameterdvARB = NULL; -glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = NULL; +/*glGetProgramLocalParameterdvARBPROC glGetProgramLocalParameterdvARB = NULL; +glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = NULL;*/ glGetProgramivARBPROC glGetProgramivARB = NULL; glGetProgramStringARBPROC glGetProgramStringARB = NULL; glGetVertexAttribdvARBPROC glGetVertexAttribdvARB = NULL; @@ -1248,21 +1158,15 @@ glGetVertexAttribfvARBPROC glGetVertexAttribfvARB = NULL; glGetVertexAttribivARBPROC glGetVertexAttribivARB = NULL; glGetVertexAttribPointervARBPROC glGetVertexAttribPointervARB = NULL; glIsProgramARBPROC glIsProgramARB = NULL; -#endif /* GL_ARB_vertex_program */ /* EXT_cull_vertex */ -#ifdef GL_EXT_cull_vertex glCullParameterfvEXTPROC glCullParameterfvEXT = NULL; glCullParameterdvEXTPROC glCullParameterdvEXT = NULL; -#endif /* GL_EXT_cull_vertex */ -#ifdef GL_EXT_blend_function_separate -glBlendFuncSeparateEXTPROC glBlendFuncSeparateEXT = NULL; -glBlendFuncSeparateINGRPROC glBlendFuncSeparateINGR = NULL; -#endif /* GL_EXT_blend_func_separate */ +//glBlendFuncSeparateEXTPROC glBlendFuncSeparateEXT = NULL; +//glBlendFuncSeparateINGRPROC glBlendFuncSeparateINGR = NULL; -#ifdef GL_VERSION_1_4 glFogCoordfPROC glFogCoordf = NULL; glFogCoordfvPROC glFogCoordfv = NULL; glFogCoorddPROC glFogCoordd = NULL; @@ -1306,46 +1210,32 @@ glWindowPos3dvPROC glWindowPos3dv = NULL; glWindowPos3fvPROC glWindowPos3fv = NULL; glWindowPos3ivPROC glWindowPos3iv = NULL; glWindowPos3svPROC glWindowPos3sv = NULL; -#endif /* GL_VERSION_1_4 */ -#ifdef GL_EXT_blend_func_separate glBlendFuncSeparateEXTPROC glBlendFuncSeparateEXT = NULL; -#endif /* GL_EXT_blend_func_separate */ - -#ifdef GL_NV_element_array glElementPointerNVPROC glElementPointerNV = NULL; glDrawElementArrayNVPROC glDrawElementArrayNV = NULL; glDrawRangeElementArrayNVPROC glDrawRangeElementArrayNV = NULL; glMultiDrawElementArrayNVPROC glMultiDrawElementArrayNV = NULL; glMultiDrawRangeElementArrayNVPROC glMultiDrawRangeElementArrayNV = NULL; -#endif /* GL_NV_element_array */ -#ifdef GL_NV_fragment_program glProgramNamedParameter4fNVPROC glProgramNamedParameter4fNV = NULL; glProgramNamedParameter4dNVPROC glProgramNamedParameter4dNV = NULL; glProgramNamedParameter4fvNVPROC glProgramNamedParameter4fvNV = NULL; glProgramNamedParameter4dvNVPROC glProgramNamedParameter4dvNV = NULL; glGetProgramNamedParameterfvNVPROC glGetProgramNamedParameterfvNV = NULL; glGetProgramNamedParameterdvNVPROC glGetProgramNamedParameterdvNV = NULL; -#ifndef GL_ARB_vertex_program glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB = NULL; glProgramLocalParameter4dvARBPROC glProgramLocalParameter4dvARB = NULL; glProgramLocalParameter4fARBPROC glProgramLocalParameter4fARB = NULL; glProgramLocalParameter4fvARBPROC glProgramLocalParameter4fvARB = NULL; glGetProgramLocalParameterdvARBPROC glGetProgramLocalParameterdvARB = NULL; glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = NULL; -#endif /* GL_ARB_vertex_program */ -#endif /* GL_NV_fragment_program */ - -#ifdef GL_NV_primitive_restart glPrimitiveRestartNVPROC glPrimitiveRestartNV = NULL; glPrimitiveRestartIndexNVPROC glPrimitiveRestartIndexNV = NULL; -#endif /* GL_NV_primitive_restart */ - -static int extgl_error = 0; +static bool extgl_error = false; struct ExtensionTypes extgl_Extensions; @@ -1363,11 +1253,33 @@ void * lib_glu_handle = NULL; CFBundleRef gBundleRefOpenGL = NULL; #endif -#define EXTGL_SANITY_CHECK(x) if (extgl_error != 0) { \ - extgl_Extensions.x = 0; \ - printf("NOTICE: %s disabled because of missing driver symbols\n", #x); \ - extgl_error = 0; \ - } +#define EXTGL_SANITY_CHECK(e,h,x) if (extgl_error) { \ + extgl_Extensions.x = 0; \ + printf("NOTICE: %s disabled because of missing driver symbols\n", #x); \ + extgl_error = false; \ + removeExtension(e, h, #x); \ + } + +static void doExtension(JNIEnv *env, jobject ext_set, const char *method_name, const char *ext) { + jclass clazz = env->GetObjectClass(ext_set); + jmethodID id = env->GetMethodID(clazz, method_name, "(Ljava/lang/Object;)Z"); + if (id == NULL) + return; + jstring ext_string = env->NewStringUTF(ext); + if (ext_string == NULL) { + printf("Could not allocate java string from %s\n", ext); + return; + } + env->CallBooleanMethod(ext_set, id, ext_string); +} + +static void removeExtension(JNIEnv *env, jobject ext_set, const char *ext) { + doExtension(env, ext_set, "remove", ext); +} + +static void insertExtension(JNIEnv *env, jobject ext_set, const char *ext) { + doExtension(env, ext_set, "add", ext); +} #ifdef _AGL // ------------------------- @@ -1470,7 +1382,7 @@ static void *extgl_GetProcAddress(char *name) #ifdef _DEBUG printf("Could not locate symbol %s\n", name); #endif - extgl_error = 1; + extgl_error = true; } } } @@ -1489,7 +1401,7 @@ static void *extgl_GetProcAddress(char *name) #ifdef _DEBUG printf("Could not locate symbol %s\n", name); #endif - extgl_error = 1; + extgl_error = true; } } } @@ -1502,36 +1414,28 @@ static void *extgl_GetProcAddress(char *name) #ifdef _DEBUG printf("Could not locate symbol %s\n", name); #endif - extgl_error = 1; + extgl_error = true; } return t; #endif } -/*-----------------------------------------------------*/ -/* WGL stuff */ -/*-----------------------------------------------------*/ - -#ifdef _WIN32 - -/** returns true if the extention is available */ -static int QueryWGLExtension(const char *name) +static bool QueryExtension(JNIEnv *env, jobject ext_set, const GLubyte*extensions, const char *name) { - const GLubyte *extensions; const GLubyte *start; GLubyte *where, *terminator; + if (extensions == NULL) { +#ifdef _DEBUG + printf("NULL extension string\n"); +#endif + extgl_error = true; + return false; + } /* Extension names should not have spaces. */ where = (GLubyte *) strchr(name, ' '); if (where || *name == '\0') - return 0; - if (wglGetExtensionsStringARB == NULL) - if (wglGetExtensionsStringEXT == NULL) - return 0; - else - extensions = (GLubyte*)wglGetExtensionsStringEXT(); - else - extensions = (GLubyte*)wglGetExtensionsStringARB(wglGetCurrentDC()); + return false; /* It takes a bit of care to be fool-proof about parsing the OpenGL extensions string. Don't be fooled by sub-strings, etc. */ @@ -1543,113 +1447,125 @@ static int QueryWGLExtension(const char *name) break; terminator = where + strlen(name); if (where == start || *(where - 1) == ' ') - if (*terminator == ' ' || *terminator == '\0') - return 1; + if (*terminator == ' ' || *terminator == '\0') { + insertExtension(env, ext_set, name); + return true; + } start = terminator; } - return 0; + return false; +} +/*-----------------------------------------------------*/ +/* WGL stuff */ +/*-----------------------------------------------------*/ + +#ifdef _WIN32 + +/** returns true if the extention is available */ +static bool WGLQueryExtension(JNIEnv *env, jobject ext_set, const char *name) +{ + const GLubyte *extensions; + + if (wglGetExtensionsStringARB == NULL) + if (wglGetExtensionsStringEXT == NULL) + return false; + else + extensions = (GLubyte*)wglGetExtensionsStringEXT(); + else + extensions = (GLubyte*)wglGetExtensionsStringARB(wglGetCurrentDC()); + return QueryExtension(env, ext_set, extensions, name); } -static void extgl_InitWGLARBBufferRegion() +static void extgl_InitWGLARBBufferRegion(JNIEnv *env, jobject ext_set) { -#ifdef WGL_ARB_buffer_region - if (!extgl_Extensions.wgl.ARB_buffer_region) + if (!extgl_Extensions.WGL_ARB_buffer_region) return; wglCreateBufferRegionARB = (wglCreateBufferRegionARBPROC) extgl_GetProcAddress("wglCreateBufferRegionARB"); wglDeleteBufferRegionARB = (wglDeleteBufferRegionARBPROC) extgl_GetProcAddress("wglDeleteBufferRegionARB"); wglSaveBufferRegionARB = (wglSaveBufferRegionARBPROC) extgl_GetProcAddress("wglSaveBufferRegionARB"); wglRestoreBufferRegionARB = (wglRestoreBufferRegionARBPROC) extgl_GetProcAddress("wglRestoreBufferRegionARB"); -#endif + EXTGL_SANITY_CHECK(env, ext_set, WGL_ARB_buffer_region); } -static void extgl_InitWGLARBPbuffer() +static void extgl_InitWGLARBPbuffer(JNIEnv *env, jobject ext_set) { -#ifdef WGL_ARB_pbuffer - if (!extgl_Extensions.wgl.ARB_pbuffer) + if (!extgl_Extensions.WGL_ARB_pbuffer) return; wglCreatePbufferARB = (wglCreatePbufferARBPROC) extgl_GetProcAddress("wglCreatePbufferARB"); wglGetPbufferDCARB = (wglGetPbufferDCARBPROC) extgl_GetProcAddress("wglGetPbufferDCARB"); wglReleasePbufferDCARB = (wglReleasePbufferDCARBPROC) extgl_GetProcAddress("wglReleasePbufferDCARB"); wglDestroyPbufferARB = (wglDestroyPbufferARBPROC) extgl_GetProcAddress("wglDestroyPbufferARB"); wglQueryPbufferARB = (wglQueryPbufferARBPROC) extgl_GetProcAddress("wglQueryPbufferARB"); -#endif + EXTGL_SANITY_CHECK(env, ext_set, WGL_ARB_pbuffer); } -static void extgl_InitWGLARBPixelFormat() +static void extgl_InitWGLARBPixelFormat(JNIEnv *env, jobject ext_set) { -#ifdef WGL_ARB_pixel_format - if (!extgl_Extensions.wgl.ARB_pixel_format) + if (!extgl_Extensions.WGL_ARB_pixel_format) return; wglGetPixelFormatAttribivARB = (wglGetPixelFormatAttribivARBPROC) extgl_GetProcAddress("wglGetPixelFormatAttribivARB"); wglGetPixelFormatAttribfvARB = (wglGetPixelFormatAttribfvARBPROC) extgl_GetProcAddress("wglGetPixelFormatAttribfvARB"); wglChoosePixelFormatARB = (wglChoosePixelFormatARBPROC) extgl_GetProcAddress("wglChoosePixelFormatARB"); -#endif + EXTGL_SANITY_CHECK(env, ext_set, WGL_ARB_pixel_format); } -static void extgl_InitWGLARBRenderTexture() +static void extgl_InitWGLARBRenderTexture(JNIEnv *env, jobject ext_set) { -#ifdef WGL_ARB_render_texture - if (!extgl_Extensions.wgl.ARB_render_texture) + if (!extgl_Extensions.WGL_ARB_render_texture) return; wglBindTexImageARB = (wglBindTexImageARBPROC) extgl_GetProcAddress("wglBindTexImageARB"); wglReleaseTexImageARB = (wglReleaseTexImageARBPROC) extgl_GetProcAddress("wglReleaseTexImageARB"); wglSetPbufferAttribARB = (wglSetPbufferAttribARBPROC) extgl_GetProcAddress("wglSetPbufferAttribARB"); -#endif + EXTGL_SANITY_CHECK(env, ext_set, WGL_ARB_render_texture); } -static void extgl_InitWGLEXTSwapControl() +static void extgl_InitWGLEXTSwapControl(JNIEnv *env, jobject ext_set) { -#ifdef WGL_EXT_swap_control - if (!extgl_Extensions.wgl.EXT_swap_control) + if (!extgl_Extensions.WGL_EXT_swap_control) return; wglSwapIntervalEXT = (wglSwapIntervalEXTPROC) extgl_GetProcAddress("wglSwapIntervalEXT"); wglGetSwapIntervalEXT = (wglGetSwapIntervalEXTPROC) extgl_GetProcAddress("wglGetSwapIntervalEXT"); -#endif + EXTGL_SANITY_CHECK(env, ext_set, WGL_EXT_swap_control); } -static void extgl_InitWGLARBMakeCurrentRead() +static void extgl_InitWGLARBMakeCurrentRead(JNIEnv *env, jobject ext_set) { -#ifdef WGL_ARB_make_current_read - if (!extgl_Extensions.wgl.ARB_make_current_read) + if (!extgl_Extensions.WGL_ARB_make_current_read) return; wglMakeContextCurrentARB = (wglMakeContextCurrentARBPROC) extgl_GetProcAddress("wglMakeContextCurrentARB"); wglGetCurrentReadDCARB = (wglGetCurrentReadDCARBPROC) extgl_GetProcAddress("wglGetCurrentReadDCARB"); -#endif + EXTGL_SANITY_CHECK(env, ext_set, WGL_ARB_make_current_read); } -static void extgl_InitSupportedWGLExtensions() +static void extgl_InitSupportedWGLExtensions(JNIEnv *env, jobject ext_set) { - extgl_Extensions.wgl.ARB_buffer_region = QueryWGLExtension("WGL_ARB_buffer_region"); - extgl_Extensions.wgl.ARB_make_current_read = QueryWGLExtension("WGL_ARB_make_current_read"); - extgl_Extensions.wgl.ARB_multisample = QueryWGLExtension("WGL_ARB_multisample"); - extgl_Extensions.wgl.ARB_pbuffer = QueryWGLExtension("WGL_ARB_pbuffer"); - extgl_Extensions.wgl.ARB_pixel_format = QueryWGLExtension("WGL_ARB_pixel_format"); - extgl_Extensions.wgl.ARB_render_texture = QueryWGLExtension("WGL_ARB_render_texture"); - extgl_Extensions.wgl.EXT_swap_control = QueryWGLExtension("WGL_EXT_swap_control"); - extgl_Extensions.wgl.NV_render_depth_texture = QueryWGLExtension("WGL_NV_render_depth_texture"); - extgl_Extensions.wgl.NV_render_texture_rectangle = QueryWGLExtension("WGL_NV_render_texture_rectangle"); + extgl_Extensions.WGL_ARB_buffer_region = WGLQueryExtension(env, ext_set, "WGL_ARB_buffer_region"); + extgl_Extensions.WGL_ARB_make_current_read = WGLQueryExtension(env, ext_set, "WGL_ARB_make_current_read"); + extgl_Extensions.WGL_ARB_multisample = WGLQueryExtension(env, ext_set, "WGL_ARB_multisample"); + extgl_Extensions.WGL_ARB_pbuffer = WGLQueryExtension(env, ext_set, "WGL_ARB_pbuffer"); + extgl_Extensions.WGL_ARB_pixel_format = WGLQueryExtension(env, ext_set, "WGL_ARB_pixel_format"); + extgl_Extensions.WGL_ARB_render_texture = WGLQueryExtension(env, ext_set, "WGL_ARB_render_texture"); + extgl_Extensions.WGL_EXT_swap_control = WGLQueryExtension(env, ext_set, "WGL_EXT_swap_control"); + extgl_Extensions.WGL_NV_render_depth_texture = WGLQueryExtension(env, ext_set, "WGL_NV_render_depth_texture"); + extgl_Extensions.WGL_NV_render_texture_rectangle = WGLQueryExtension(env, ext_set, "WGL_NV_render_texture_rectangle"); } -static int extgl_InitializeWGL() +static void extgl_InitializeWGL(JNIEnv *env, jobject ext_set) { - extgl_error = 0; wglGetExtensionsStringARB = (wglGetExtensionsStringARBPROC) extgl_GetProcAddress("wglGetExtensionsStringARB"); wglGetExtensionsStringEXT = (wglGetExtensionsStringEXTPROC) extgl_GetProcAddress("wglGetExtensionsStringEXT"); - extgl_Extensions.wgl.ARB_extensions_string = wglGetExtensionsStringARB != NULL; - extgl_Extensions.wgl.EXT_extensions_string = wglGetExtensionsStringEXT != NULL; - extgl_error = 0; + extgl_Extensions.WGL_ARB_extensions_string = wglGetExtensionsStringARB != NULL; + extgl_Extensions.WGL_EXT_extensions_string = wglGetExtensionsStringEXT != NULL; + extgl_error = false; - extgl_InitSupportedWGLExtensions(); - + extgl_InitSupportedWGLExtensions(env, ext_set); - extgl_InitWGLARBMakeCurrentRead(); - extgl_InitWGLEXTSwapControl(); - extgl_InitWGLARBRenderTexture(); - extgl_InitWGLARBPixelFormat(); - extgl_InitWGLARBPbuffer(); - extgl_InitWGLARBBufferRegion(); - - return extgl_error; + extgl_InitWGLARBMakeCurrentRead(env, ext_set); + extgl_InitWGLEXTSwapControl(env, ext_set); + extgl_InitWGLARBRenderTexture(env, ext_set); + extgl_InitWGLARBPixelFormat(env, ext_set); + extgl_InitWGLARBPbuffer(env, ext_set); + extgl_InitWGLARBBufferRegion(env, ext_set); } #endif /* WIN32 */ @@ -1675,65 +1591,30 @@ static int extgl_InitializeAGL() /* AGL stuff END*/ /*-----------------------------------------------------*/ -static int QueryExtension(const GLubyte*extensions, const char *name) -{ - const GLubyte *start; - GLubyte *where, *terminator; - - if (extensions == NULL) { -#ifdef _DEBUG - printf("NULL extension string\n"); -#endif - extgl_error = 1; - return 0; - } - /* Extension names should not have spaces. */ - where = (GLubyte *) strchr(name, ' '); - if (where || *name == '\0') - return 0; - /* It takes a bit of care to be fool-proof about parsing the - OpenGL extensions string. Don't be fooled by sub-strings, - etc. */ - start = extensions; - for (;;) - { - where = (GLubyte *) strstr((const char *) start, name); - if (!where) - break; - terminator = where + strlen(name); - if (where == start || *(where - 1) == ' ') - if (*terminator == ' ' || *terminator == '\0') - return 1; - start = terminator; - } - return 0; -} - #ifdef _X11 /** returns true if the extention is available */ -static int GLXQueryExtension(Display *disp, int screen, const char *name) +static int GLXQueryExtension(JNIEnv* env, jobject ext_set, Display *disp, int screen, const char *name) { const GLubyte *exts = (const GLubyte *)glXQueryExtensionsString(disp, screen); - return QueryExtension(exts, name); + return QueryExtension(env, ext_set, exts, name); } #endif /** returns true if the extention is available */ -static int GLUQueryExtension(const char *name) +static bool GLUQueryExtension(JNIEnv *env, jobject ext_set, const char *name) { - return QueryExtension(gluGetString(GLU_EXTENSIONS), name); + return QueryExtension(env, ext_set, gluGetString(GLU_EXTENSIONS), name); } /** returns true if the extention is available */ -static int GLQueryExtension(const char *name) +static bool GLQueryExtension(JNIEnv *env, jobject ext_set, const char *name) { - return QueryExtension(glGetString(GL_EXTENSIONS), name); + return QueryExtension(env, ext_set, glGetString(GL_EXTENSIONS), name); } -static void extgl_InitARBFragmentProgram() +static void extgl_InitARBFragmentProgram(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_fragment_program - if (!extgl_Extensions.ARB_fragment_program) + if (!extgl_Extensions.GL_ARB_fragment_program) return; glProgramStringARB = (glProgramStringARBPROC) extgl_GetProcAddress("glProgramStringARB"); glBindProgramARB = (glBindProgramARBPROC) extgl_GetProcAddress("glBindProgramARB"); @@ -1754,25 +1635,21 @@ static void extgl_InitARBFragmentProgram() glGetProgramivARB = (glGetProgramivARBPROC) extgl_GetProcAddress("glGetProgramivARB"); glGetProgramStringARB = (glGetProgramStringARBPROC) extgl_GetProcAddress("glGetProgramStringARB"); glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB"); - EXTGL_SANITY_CHECK(ARB_fragment_program) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_fragment_program) } -static void extgl_InitNVPrimitiveRestart() +static void extgl_InitNVPrimitiveRestart(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_primitive_restart - if (!extgl_Extensions.NV_primitive_restart) + if (!extgl_Extensions.GL_NV_primitive_restart) return; glPrimitiveRestartNV = (glPrimitiveRestartNVPROC) extgl_GetProcAddress("glPrimitiveRestartNV"); glPrimitiveRestartIndexNV = (glPrimitiveRestartIndexNVPROC) extgl_GetProcAddress("glPrimitiveRestartIndexNV"); - EXTGL_SANITY_CHECK(NV_primitive_restart) -#endif /* GL_NV_primitive_restart */ + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_primitive_restart) } -static void extgl_InitNVFragmentProgram() +static void extgl_InitNVFragmentProgram(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_fragment_program - if (!extgl_Extensions.NV_fragment_program) + if (!extgl_Extensions.GL_NV_fragment_program) return; glProgramNamedParameter4fNV = (glProgramNamedParameter4fNVPROC) extgl_GetProcAddress("glProgramNamedParameter4fNV"); glProgramNamedParameter4dNV = (glProgramNamedParameter4dNVPROC) extgl_GetProcAddress("glProgramNamedParameter4dNV"); @@ -1780,58 +1657,48 @@ static void extgl_InitNVFragmentProgram() glProgramNamedParameter4dvNV = (glProgramNamedParameter4dvNVPROC) extgl_GetProcAddress("glProgramNamedParameter4dvNV"); glGetProgramNamedParameterfvNV = (glGetProgramNamedParameterfvNVPROC) extgl_GetProcAddress("glGetProgramNamedParameterfvNV"); glGetProgramNamedParameterdvNV = (glGetProgramNamedParameterdvNVPROC) extgl_GetProcAddress("glGetProgramNamedParameterdvNV"); -#ifndef GL_ARB_vertex_program glProgramLocalParameter4dARB = (glProgramLocalParameter4dARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dARB"); glProgramLocalParameter4dvARB = (glProgramLocalParameter4dvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4dvARB"); glProgramLocalParameter4fARB = (glProgramLocalParameter4fARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fARB"); glProgramLocalParameter4fvARB = (glProgramLocalParameter4fvARBPROC) extgl_GetProcAddress("glProgramLocalParameter4fvARB"); glGetProgramLocalParameterdvARB = (glGetProgramLocalParameterdvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterdvARB"); glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC) extgl_GetProcAddress("glGetProgramLocalParameterfvARB"); -#endif /* GL_ARB_vertex_program */ - EXTGL_SANITY_CHECK(NV_fragment_program) -#endif /* GL_NV_fragment_program */ + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_fragment_program) } -static void extgl_InitNVElementArray() +static void extgl_InitNVElementArray(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_element_array - if (!extgl_Extensions.NV_element_array) + if (!extgl_Extensions.GL_NV_element_array) return; glElementPointerNV = (glElementPointerNVPROC) extgl_GetProcAddress("glElementPointerNV"); glDrawElementArrayNV = (glDrawElementArrayNVPROC) extgl_GetProcAddress("glDrawElementArrayNV"); glDrawRangeElementArrayNV = (glDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glDrawRangeElementArrayNV"); glMultiDrawElementArrayNV = (glMultiDrawElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawElementArrayNV"); glMultiDrawRangeElementArrayNV = (glMultiDrawRangeElementArrayNVPROC) extgl_GetProcAddress("glMultiDrawRangeElementArrayNV"); - EXTGL_SANITY_CHECK(NV_element_array) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_element_array) } -static void extgl_InitEXTBlendFuncSeparate() +static void extgl_InitEXTBlendFuncSeparate(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_blend_func_separate - if (!extgl_Extensions.EXT_blend_func_separate) + if (!extgl_Extensions.GL_EXT_blend_func_separate) return; glBlendFuncSeparateEXT = (glBlendFuncSeparateEXTPROC) extgl_GetProcAddress("glBlendFuncSeparateEXT"); - EXTGL_SANITY_CHECK(EXT_blend_func_separate) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_blend_func_separate) } -static void extgl_InitEXTCullVertex() +static void extgl_InitEXTCullVertex(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_cull_vertex - if (!extgl_Extensions.EXT_cull_vertex) + if (!extgl_Extensions.GL_EXT_cull_vertex) return; glCullParameterfvEXT = (glCullParameterfvEXTPROC) extgl_GetProcAddress("glCullParameterfvEXT"); glCullParameterdvEXT = (glCullParameterdvEXTPROC) extgl_GetProcAddress("glCullParameterdvEXT"); - EXTGL_SANITY_CHECK(EXT_cull_vertex) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_cull_vertex) } -static void extgl_InitARBVertexBufferObject() +static void extgl_InitARBVertexBufferObject(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_vertex_buffer_object - if (!extgl_Extensions.ARB_vertex_buffer_object) + if (!extgl_Extensions.GL_ARB_vertex_buffer_object) return; glBindBufferARB = (glBindBufferARBPROC) extgl_GetProcAddress("glBindBufferARB"); glDeleteBuffersARB = (glDeleteBuffersARBPROC) extgl_GetProcAddress("glDeleteBuffersARB"); @@ -1844,14 +1711,12 @@ static void extgl_InitARBVertexBufferObject() glUnmapBufferARB = (glUnmapBufferARBPROC) extgl_GetProcAddress("glUnmapBufferARB"); glGetBufferParameterivARB = (glGetBufferParameterivARBPROC) extgl_GetProcAddress("glGetBufferParameterivARB"); glGetBufferPointervARB = (glGetBufferPointervARBPROC) extgl_GetProcAddress("glGetBufferPointervARB"); - EXTGL_SANITY_CHECK(ARB_vertex_buffer_object) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_vertex_buffer_object) } -static void extgl_InitARBVertexProgram() +static void extgl_InitARBVertexProgram(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_vertex_program - if (!extgl_Extensions.ARB_vertex_program) + if (!extgl_Extensions.GL_ARB_vertex_program) return; glVertexAttrib1sARB = (glVertexAttrib1sARBPROC) extgl_GetProcAddress("glVertexAttrib1sARB"); glVertexAttrib1fARB = (glVertexAttrib1fARBPROC) extgl_GetProcAddress("glVertexAttrib1fARB"); @@ -1915,24 +1780,20 @@ static void extgl_InitARBVertexProgram() glGetVertexAttribivARB = (glGetVertexAttribivARBPROC) extgl_GetProcAddress("glGetVertexAttribivARB"); glGetVertexAttribPointervARB = (glGetVertexAttribPointervARBPROC) extgl_GetProcAddress("glGetVertexAttribPointervARB"); glIsProgramARB = (glIsProgramARBPROC) extgl_GetProcAddress("glIsProgramARB"); - EXTGL_SANITY_CHECK(ARB_vertex_program) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_vertex_program) } -static void extgl_InitEXTStencilTwoSide() +static void extgl_InitEXTStencilTwoSide(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_stencil_two_side - if (!extgl_Extensions.EXT_stencil_two_side) + if (!extgl_Extensions.GL_EXT_stencil_two_side) return; glActiveStencilFaceEXT = (glActiveStencilFaceEXTPROC) extgl_GetProcAddress("glActiveStencilFaceEXT"); - EXTGL_SANITY_CHECK(EXT_stencil_two_side) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_stencil_two_side) } -static void extgl_InitARBWindowPos() +static void extgl_InitARBWindowPos(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_window_pos - if (!extgl_Extensions.ARB_window_pos) + if (!extgl_Extensions.GL_ARB_window_pos) return; glWindowPos2dARB = (glWindowPos2dARBPROC) extgl_GetProcAddress("glWindowPos2dARB"); glWindowPos2fARB = (glWindowPos2fARBPROC) extgl_GetProcAddress("glWindowPos2fARB"); @@ -1950,14 +1811,12 @@ static void extgl_InitARBWindowPos() glWindowPos3fvARB = (glWindowPos3fvARBPROC) extgl_GetProcAddress("glWindowPos3fvARB"); glWindowPos3ivARB = (glWindowPos3ivARBPROC) extgl_GetProcAddress("glWindowPos3ivARB"); glWindowPos3svARB = (glWindowPos3svARBPROC) extgl_GetProcAddress("glWindowPos3svARB"); - EXTGL_SANITY_CHECK(ARB_window_pos) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_window_pos) } -static void extgl_InitARBTextureCompression() +static void extgl_InitARBTextureCompression(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_texture_compression - if (!extgl_Extensions.ARB_texture_compression) + if (!extgl_Extensions.GL_ARB_texture_compression) return; glCompressedTexImage3DARB = (glCompressedTexImage3DARBPROC) extgl_GetProcAddress("glCompressedTexImage3DARB"); glCompressedTexImage2DARB = (glCompressedTexImage2DARBPROC) extgl_GetProcAddress("glCompressedTexImage2DARB"); @@ -1966,25 +1825,21 @@ static void extgl_InitARBTextureCompression() glCompressedTexSubImage2DARB = (glCompressedTexSubImage2DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage2DARB"); glCompressedTexSubImage1DARB = (glCompressedTexSubImage1DARBPROC) extgl_GetProcAddress("glCompressedTexSubImage1DARB"); glGetCompressedTexImageARB = (glGetCompressedTexImageARBPROC) extgl_GetProcAddress("glGetCompressedTexImageARB"); - EXTGL_SANITY_CHECK(ARB_texture_compression) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_texture_compression) } -static void extgl_InitNVPointSprite() +static void extgl_InitNVPointSprite(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_point_sprite - if (!extgl_Extensions.NV_point_sprite) + if (!extgl_Extensions.GL_NV_point_sprite) return; glPointParameteriNV = (glPointParameteriNVPROC) extgl_GetProcAddress("glPointParameteriNV"); glPointParameterivNV = (glPointParameterivNVPROC) extgl_GetProcAddress("glPointParameterivNV"); - EXTGL_SANITY_CHECK(NV_point_sprite) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_point_sprite) } -static void extgl_InitNVOcclusionQuery() +static void extgl_InitNVOcclusionQuery(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_occlusion_query - if (!extgl_Extensions.NV_occlusion_query) + if (!extgl_Extensions.GL_NV_occlusion_query) return; glGenOcclusionQueriesNV = (glGenOcclusionQueriesNVPROC) extgl_GetProcAddress("glGenOcclusionQueriesNV"); glDeleteOcclusionQueriesNV = (glDeleteOcclusionQueriesNVPROC) extgl_GetProcAddress("glDeleteOcclusionQueriesNV"); @@ -1993,14 +1848,12 @@ static void extgl_InitNVOcclusionQuery() glEndOcclusionQueryNV = (glEndOcclusionQueryNVPROC) extgl_GetProcAddress("glEndOcclusionQueryNV"); glGetOcclusionQueryivNV = (glGetOcclusionQueryivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryivNV"); glGetOcclusionQueryuivNV = (glGetOcclusionQueryuivNVPROC) extgl_GetProcAddress("glGetOcclusionQueryuivNV"); - EXTGL_SANITY_CHECK(NV_occlusion_query) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_occlusion_query) } -static void extgl_InitATIVertexArrayObject() +static void extgl_InitATIVertexArrayObject(JNIEnv *env, jobject ext_set) { -#ifdef GL_ATI_vertex_array_object - if (!extgl_Extensions.ATI_vertex_array_object) + if (!extgl_Extensions.GL_ATI_vertex_array_object) return; glNewObjectBufferATI = (glNewObjectBufferATIPROC) extgl_GetProcAddress("glNewObjectBufferATI"); glIsObjectBufferATI = (glIsObjectBufferATIPROC) extgl_GetProcAddress("glIsObjectBufferATI"); @@ -2014,14 +1867,12 @@ static void extgl_InitATIVertexArrayObject() glVariantArrayObjectATI = (glVariantArrayObjectATIPROC) extgl_GetProcAddress("glVariantArrayObjectATI"); glGetVariantArrayObjectfvATI = (glGetVariantArrayObjectfvATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectfvATI"); glGetVariantArrayObjectivATI = (glGetVariantArrayObjectivATIPROC) extgl_GetProcAddress("glGetVariantArrayObjectivATI"); - EXTGL_SANITY_CHECK(ATI_vertex_array_object) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ATI_vertex_array_object) } -static void extgl_InitATIVertexStreams() +static void extgl_InitATIVertexStreams(JNIEnv *env, jobject ext_set) { -#ifdef GL_ATI_vertex_streams - if (!extgl_Extensions.ATI_vertex_streams) + if (!extgl_Extensions.GL_ATI_vertex_streams) return; glClientActiveVertexStreamATI = (glClientActiveVertexStreamATIPROC) extgl_GetProcAddress("glClientActiveVertexStreamATI"); glVertexBlendEnviATI = (glVertexBlendEnviATIPROC) extgl_GetProcAddress("glVertexBlendEnviATI"); @@ -2060,26 +1911,22 @@ static void extgl_InitATIVertexStreams() glNormalStream3fvATI = (glNormalStream3fvATIPROC) extgl_GetProcAddress("glNormalStream3fvATI"); glNormalStream3dATI = (glNormalStream3dATIPROC) extgl_GetProcAddress("glNormalStream3dATI"); glNormalStream3dvATI = (glNormalStream3dvATIPROC) extgl_GetProcAddress("glNormalStream3dvATI"); - EXTGL_SANITY_CHECK(ATI_vertex_streams) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ATI_vertex_streams) } -static void extgl_InitATIElementArray() +static void extgl_InitATIElementArray(JNIEnv *env, jobject ext_set) { -#ifdef GL_ATI_element_array - if (!extgl_Extensions.ATI_element_array) + if (!extgl_Extensions.GL_ATI_element_array) return; glElementPointerATI = (glElementPointerATIPROC) extgl_GetProcAddress("glElementPointerATI"); glDrawElementArrayATI = (glDrawElementArrayATIPROC) extgl_GetProcAddress("glDrawElementArrayATI"); glDrawRangeElementArrayATI = (glDrawRangeElementArrayATIPROC) extgl_GetProcAddress("glDrawRangeElementArrayATI"); - EXTGL_SANITY_CHECK(ATI_element_array) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ATI_element_array) } -static void extgl_InitATIFragmentShader() +static void extgl_InitATIFragmentShader(JNIEnv *env, jobject ext_set) { -#ifdef GL_ATI_fragment_shader - if (!extgl_Extensions.ATI_fragment_shader) + if (!extgl_Extensions.GL_ATI_fragment_shader) return; glGenFragmentShadersATI = (glGenFragmentShadersATIPROC) extgl_GetProcAddress("glGenFragmentShadersATI"); glBindFragmentShaderATI = (glBindFragmentShaderATIPROC) extgl_GetProcAddress("glBindFragmentShaderATI"); @@ -2095,28 +1942,24 @@ static void extgl_InitATIFragmentShader() glAlphaFragmentOp2ATI = (glAlphaFragmentOp2ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp2ATI"); glAlphaFragmentOp3ATI = (glAlphaFragmentOp3ATIPROC) extgl_GetProcAddress("glAlphaFragmentOp3ATI"); glSetFragmentShaderConstantATI = (glSetFragmentShaderConstantATIPROC) extgl_GetProcAddress("glSetFragmentShaderConstantATI"); - EXTGL_SANITY_CHECK(ATI_fragment_shader) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ATI_fragment_shader) } -static void extgl_InitATIEnvmapBumpmap() +static void extgl_InitATIEnvmapBumpmap(JNIEnv *env, jobject ext_set) { -#ifdef GL_ATI_envmap_bumpmap - if (!extgl_Extensions.ATI_envmap_bumpmap) + if (!extgl_Extensions.GL_ATI_envmap_bumpmap) return; glTexBumpParameterivATI = (glTexBumpParameterivATIPROC) extgl_GetProcAddress("glTexBumpParameterivATI"); glTexBumpParameterfvATI = (glTexBumpParameterfvATIPROC) extgl_GetProcAddress("glTexBumpParameterfvATI"); glGetTexBumpParameterivATI = (glGetTexBumpParameterivATIPROC) extgl_GetProcAddress("glGetTexBumpParameterivATI"); glGetTexBumpParameterfvATI = (glGetTexBumpParameterfvATIPROC) extgl_GetProcAddress("glGetTexBumpParameterfvATI"); - EXTGL_SANITY_CHECK(ATI_envmap_bumpmap) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ATI_envmap_bumpmap) } -static void extgl_InitEXTVertexShader() +static void extgl_InitEXTVertexShader(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_vertex_shader - if (!extgl_Extensions.EXT_vertex_shader) + if (!extgl_Extensions.GL_EXT_vertex_shader) return; glBeginVertexShaderEXT = (glBeginVertexShaderEXTPROC) extgl_GetProcAddress("glBeginVertexShaderEXT"); glEndVertexShaderEXT = (glEndVertexShaderEXTPROC) extgl_GetProcAddress("glEndVertexShaderEXT"); @@ -2160,39 +2003,33 @@ static void extgl_InitEXTVertexShader() glGetLocalConstantBooleanvEXT = (glGetLocalConstantBooleanvEXTPROC) extgl_GetProcAddress("glGetLocalConstantBooleanvEXT"); glGetLocalConstantIntegervEXT = (glGetLocalConstantIntegervEXTPROC) extgl_GetProcAddress("glGetLocalConstantIntegervEXT"); glGetLocalConstantFloatvEXT = (glGetLocalConstantFloatvEXTPROC) extgl_GetProcAddress("glGetLocalConstantFloatvEXT"); - EXTGL_SANITY_CHECK(EXT_vertex_shader) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_vertex_shader) } -static void extgl_InitARBMatrixPalette() +static void extgl_InitARBMatrixPalette(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_matrix_palette - if (!extgl_Extensions.ARB_matrix_palette) + if (!extgl_Extensions.GL_ARB_matrix_palette) return; glCurrentPaletteMatrixARB = (glCurrentPaletteMatrixARBPROC) extgl_GetProcAddress("glCurrentPaletteMatrixARB"); glMatrixIndexubvARB = (glMatrixIndexubvARBPROC) extgl_GetProcAddress("glMatrixIndexubvARB"); glMatrixIndexusvARB = (glMatrixIndexusvARBPROC) extgl_GetProcAddress("glMatrixIndexusvARB"); glMatrixIndexuivARB = (glMatrixIndexuivARBPROC) extgl_GetProcAddress("glMatrixIndexuivARB"); glMatrixIndexPointerARB = (glMatrixIndexPointerARBPROC) extgl_GetProcAddress("glMatrixIndexPointerARB"); - EXTGL_SANITY_CHECK(ARB_matrix_palette) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_matrix_palette) } -static void extgl_InitEXTMultiDrawArrays() +static void extgl_InitEXTMultiDrawArrays(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_multi_draw_arrays - if (!extgl_Extensions.EXT_multi_draw_arrays) + if (!extgl_Extensions.GL_EXT_multi_draw_arrays) return; glMultiDrawArraysEXT = (glMultiDrawArraysEXTPROC) extgl_GetProcAddress("glMultiDrawArraysEXT"); glMultiDrawElementsEXT = (glMultiDrawElementsEXTPROC) extgl_GetProcAddress("glMultiDrawElementsEXT"); - EXTGL_SANITY_CHECK(EXT_multi_draw_arrays) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_multi_draw_arrays) } -static void extgl_InitARBVertexBlend() +static void extgl_InitARBVertexBlend(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_vertex_blend - if (!extgl_Extensions.ARB_vertex_blend) + if (!extgl_Extensions.GL_ARB_vertex_blend) return; glWeightbvARB = (glWeightbvARBPROC) extgl_GetProcAddress("glWeightbvARB"); glWeightsvARB = (glWeightsvARBPROC) extgl_GetProcAddress("glWeightsvARB"); @@ -2204,47 +2041,39 @@ static void extgl_InitARBVertexBlend() glWeightuivARB = (glWeightuivARBPROC) extgl_GetProcAddress("glWeightuivARB"); glWeightPointerARB = (glWeightPointerARBPROC) extgl_GetProcAddress("glWeightPointerARB"); glVertexBlendARB = (glVertexBlendARBPROC) extgl_GetProcAddress("glVertexBlendARB"); - EXTGL_SANITY_CHECK(ARB_vertex_blend) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_vertex_blend) } -static void extgl_InitARBPointParameters() +static void extgl_InitARBPointParameters(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_point_parameters - if (!extgl_Extensions.ARB_point_parameters) + if (!extgl_Extensions.GL_ARB_point_parameters) return; glPointParameterfARB = (glPointParameterfARBPROC) extgl_GetProcAddress("glPointParameterfARB"); glPointParameterfvARB = (glPointParameterfvARBPROC) extgl_GetProcAddress("glPointParameterfvARB"); - EXTGL_SANITY_CHECK(ARB_point_parameters) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_point_parameters) } -static void extgl_InitATIPNTriangles() +static void extgl_InitATIPNTriangles(JNIEnv *env, jobject ext_set) { -#ifdef GL_ATI_pn_triangles - if (!extgl_Extensions.ATI_pn_triangles) + if (!extgl_Extensions.GL_ATI_pn_triangles) return; glPNTrianglesiATI = (glPNTrianglesiATIPROC) extgl_GetProcAddress("glPNTrianglesiATI"); glPNTrianglesfATI = (glPNTrianglesfATIPROC) extgl_GetProcAddress("glPNTrianglesfATI"); - EXTGL_SANITY_CHECK(ATI_pn_triangles) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ATI_pn_triangles) } -static void extgl_InitATISeparateStencil() +static void extgl_InitATISeparateStencil(JNIEnv *env, jobject ext_set) { -#ifdef GL_ATI_separate_stencil - if (!extgl_Extensions.ATI_separate_stencil) + if (!extgl_Extensions.GL_ATI_separate_stencil) return; glStencilOpSeparateATI = (glStencilOpSeparateATIPROC)extgl_GetProcAddress("glStencilOpSeparateATI"); glStencilFuncSeparateATI = (glStencilFuncSeparateATIPROC)extgl_GetProcAddress("glStencilFuncSeparateATI"); - EXTGL_SANITY_CHECK(ATI_separate_stencil) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ATI_separate_stencil) } -static void extgl_InitNVEvaluators() +static void extgl_InitNVEvaluators(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_evaluators - if (!extgl_Extensions.NV_evaluators) + if (!extgl_Extensions.GL_NV_evaluators) return; glMapControlPointsNV = (glMapControlPointsNVPROC) extgl_GetProcAddress("glMapControlPointsNV"); glMapParameterivNV = (glMapParameterivNVPROC) extgl_GetProcAddress("glMapParameterivNV"); @@ -2255,25 +2084,21 @@ static void extgl_InitNVEvaluators() glGetMapAttribParameterivNV = (glGetMapAttribParameterivNVPROC) extgl_GetProcAddress("glGetMapAttribParameterivNV"); glGetMapAttribParameterfvNV = (glGetMapAttribParameterfvNVPROC) extgl_GetProcAddress("glGetMapAttribParameterfvNV"); glEvalMapsNV = (glEvalMapsNVPROC) extgl_GetProcAddress("glEvalMapsNV"); - EXTGL_SANITY_CHECK(NV_evaluators) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_evaluators) } -static void extgl_InitNVRegisterCombiners2() +static void extgl_InitNVRegisterCombiners2(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_register_combiners - if (!extgl_Extensions.NV_register_combiners2) + if (!extgl_Extensions.GL_NV_register_combiners2) return; glCombinerStageParameterfvNV = (glCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glCombinerStageParameterfvNV"); glGetCombinerStageParameterfvNV = (glGetCombinerStageParameterfvNVPROC) extgl_GetProcAddress("glGetCombinerStageParameterfvNV"); - EXTGL_SANITY_CHECK(NV_register_combiners2) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_register_combiners2) } -static void extgl_InitNVFence() +static void extgl_InitNVFence(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_fence - if (!extgl_Extensions.NV_fence) + if (!extgl_Extensions.GL_NV_fence) return; glGenFencesNV = (glGenFencesNVPROC) extgl_GetProcAddress("glGenFencesNV"); glDeleteFencesNV = (glDeleteFencesNVPROC) extgl_GetProcAddress("glDeleteFencesNV"); @@ -2282,14 +2107,12 @@ static void extgl_InitNVFence() glFinishFenceNV = (glFinishFenceNVPROC) extgl_GetProcAddress("glFinishFenceNV"); glIsFenceNV = (glIsFenceNVPROC) extgl_GetProcAddress("glIsFenceNV"); glGetFenceivNV = (glGetFenceivNVPROC) extgl_GetProcAddress("glGetFenceivNV"); - EXTGL_SANITY_CHECK(NV_fence) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_fence) } -static void extgl_InitNVVertexProgram() +static void extgl_InitNVVertexProgram(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_vertex_program - if (!extgl_Extensions.NV_vertex_program) + if (!extgl_Extensions.GL_NV_vertex_program) return; glBindProgramNV = (glBindProgramNVPROC) extgl_GetProcAddress("glBindProgramNV"); glDeleteProgramsNV = (glDeleteProgramsNVPROC) extgl_GetProcAddress("glDeleteProgramsNV"); @@ -2355,36 +2178,30 @@ static void extgl_InitNVVertexProgram() glVertexAttribs4fvNV = (glVertexAttribs4fvNVPROC) extgl_GetProcAddress("glVertexAttribs4fvNV"); glVertexAttribs4dvNV = (glVertexAttribs4dvNVPROC) extgl_GetProcAddress("glVertexAttribs4dvNV"); glVertexAttribs4ubvNV = (glVertexAttribs4ubvNVPROC) extgl_GetProcAddress("glVertexAttribs4ubvNV"); - EXTGL_SANITY_CHECK(NV_vertex_program) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_vertex_program) } -static void extgl_InitEXTVertexWeighting() +static void extgl_InitEXTVertexWeighting(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_vertex_weighting - if (!extgl_Extensions.EXT_vertex_weighting) + if (!extgl_Extensions.GL_EXT_vertex_weighting) return; glVertexWeightfEXT = (glVertexWeightfEXTPROC) extgl_GetProcAddress("glVertexWeightfEXT"); glVertexWeightfvEXT = (glVertexWeightfvEXTPROC) extgl_GetProcAddress("glVertexWeightfvEXT"); glVertexWeightPointerEXT = (glVertexWeightPointerEXTPROC) extgl_GetProcAddress("glVertexWeightPointerEXT"); - EXTGL_SANITY_CHECK(EXT_vertex_weighting) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_vertex_weighting) } -static void extgl_InitARBMultisample() +static void extgl_InitARBMultisample(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_multisample - if (!extgl_Extensions.ARB_multisample) + if (!extgl_Extensions.GL_ARB_multisample) return; glSampleCoverageARB = (glSampleCoverageARBPROC) extgl_GetProcAddress("glSampleCoverageARB"); - EXTGL_SANITY_CHECK(ARB_multisample) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_multisample) } -static void extgl_InitNVRegisterCombiners() +static void extgl_InitNVRegisterCombiners(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_register_combiners - if (!extgl_Extensions.NV_register_combiners) + if (!extgl_Extensions.GL_NV_register_combiners) return; glCombinerParameterfvNV = (glCombinerParameterfvNVPROC) extgl_GetProcAddress("glCombinerParameterfvNV"); glCombinerParameterfNV = (glCombinerParameterfNVPROC) extgl_GetProcAddress("glCombinerParameterfNV"); @@ -2399,25 +2216,21 @@ static void extgl_InitNVRegisterCombiners() glGetCombinerOutputParameterivNV = (glGetCombinerOutputParameterivNVPROC) extgl_GetProcAddress("glGetCombinerOutputParameterivNV"); glGetFinalCombinerInputParameterfvNV = (glGetFinalCombinerInputParameterfvNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterfvNV"); glGetFinalCombinerInputParameterivNV = (glGetFinalCombinerInputParameterivNVPROC) extgl_GetProcAddress("glGetFinalCombinerInputParameterivNV"); - EXTGL_SANITY_CHECK(NV_register_combiners) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_register_combiners) } -static void extgl_InitEXTPointParameters() +static void extgl_InitEXTPointParameters(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_point_parameters - if (!extgl_Extensions.EXT_point_parameters) + if (!extgl_Extensions.GL_EXT_point_parameters) return; glPointParameterfEXT = (glPointParameterfEXTPROC) extgl_GetProcAddress("glPointParameterfEXT"); glPointParameterfvEXT = (glPointParameterfvEXTPROC) extgl_GetProcAddress("glPointParameterfvEXT"); - EXTGL_SANITY_CHECK(EXT_point_parameters) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_point_parameters) } -static void extgl_InitNVVertexArrayRange() +static void extgl_InitNVVertexArrayRange(JNIEnv *env, jobject ext_set) { -#ifdef GL_NV_vertex_array_range - if (!extgl_Extensions.NV_vertex_array_range) + if (!extgl_Extensions.GL_NV_vertex_array_range) return; glFlushVertexArrayRangeNV = (glFlushVertexArrayRangeNVPROC) extgl_GetProcAddress("glFlushVertexArrayRangeNV"); glVertexArrayRangeNV = (glVertexArrayRangeNVPROC) extgl_GetProcAddress("glVertexArrayRangeNV"); @@ -2429,28 +2242,24 @@ static void extgl_InitNVVertexArrayRange() glXAllocateMemoryNV = (glXAllocateMemoryNVPROC) extgl_GetProcAddress("glXAllocateMemoryNV"); glXFreeMemoryNV = (glXFreeMemoryNVPROC) extgl_GetProcAddress("glXFreeMemoryNV"); #endif /* X11 */ - EXTGL_SANITY_CHECK(NV_vertex_array_range) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_NV_vertex_array_range) } -static void extgl_InitEXTFogCoord() +static void extgl_InitEXTFogCoord(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_fog_coord - if (!extgl_Extensions.EXT_fog_coord) + if (!extgl_Extensions.GL_EXT_fog_coord) return; glFogCoordfEXT = (glFogCoordfEXTPROC) extgl_GetProcAddress("glFogCoordfEXT"); glFogCoordfvEXT = (glFogCoordfvEXTPROC) extgl_GetProcAddress("glFogCoordfvEXT"); glFogCoorddEXT = (glFogCoorddEXTPROC) extgl_GetProcAddress("glFogCoorddEXT"); glFogCoorddvEXT = (glFogCoorddvEXTPROC) extgl_GetProcAddress("glFogCoorddvEXT"); glFogCoordPointerEXT = (glFogCoordPointerEXTPROC) extgl_GetProcAddress("glFogCoordPointerEXT"); - EXTGL_SANITY_CHECK(EXT_fog_coord) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_fog_coord) } -static void extgl_InitEXTSecondaryColor() +static void extgl_InitEXTSecondaryColor(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_secondary_color - if (!extgl_Extensions.EXT_secondary_color) + if (!extgl_Extensions.GL_EXT_secondary_color) return; glSecondaryColor3bEXT = (glSecondaryColor3bEXTPROC) extgl_GetProcAddress("glSecondaryColor3bEXT"); glSecondaryColor3bvEXT = (glSecondaryColor3bvEXTPROC) extgl_GetProcAddress("glSecondaryColor3bvEXT"); @@ -2469,48 +2278,40 @@ static void extgl_InitEXTSecondaryColor() glSecondaryColor3usEXT = (glSecondaryColor3usEXTPROC) extgl_GetProcAddress("glSecondaryColor3usEXT"); glSecondaryColor3usvEXT = (glSecondaryColor3usvEXTPROC) extgl_GetProcAddress("glSecondaryColor3usvEXT"); glSecondaryColorPointerEXT = (glSecondaryColorPointerEXTPROC) extgl_GetProcAddress("glSecondaryColorPointerEXT"); - EXTGL_SANITY_CHECK(EXT_secondary_color) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_secondary_color) } -static void extgl_InitEXTCompiledVertexArray() +static void extgl_InitEXTCompiledVertexArray(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_compiled_vertex_array - if (!extgl_Extensions.EXT_compiled_vertex_array) + if (!extgl_Extensions.GL_EXT_compiled_vertex_array) return; glLockArraysEXT = (glLockArraysEXTPROC) extgl_GetProcAddress("glLockArraysEXT"); glUnlockArraysEXT = (glUnlockArraysEXTPROC) extgl_GetProcAddress("glUnlockArraysEXT"); - EXTGL_SANITY_CHECK(EXT_compiled_vertex_array) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_compiled_vertex_array) } -static void extgl_InitARBTransposeMatrix() +static void extgl_InitARBTransposeMatrix(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_transpose_matrix - if (!extgl_Extensions.ARB_transpose_matrix) + if (!extgl_Extensions.GL_ARB_transpose_matrix) return; glLoadTransposeMatrixfARB = (glLoadTransposeMatrixfARBPROC) extgl_GetProcAddress("glLoadTransposeMatrixfARB"); glLoadTransposeMatrixdARB = (glLoadTransposeMatrixdARBPROC) extgl_GetProcAddress("glLoadTransposeMatrixdARB"); glMultTransposeMatrixfARB = (glMultTransposeMatrixfARBPROC) extgl_GetProcAddress("glMultTransposeMatrixfARB"); glMultTransposeMatrixdARB = (glMultTransposeMatrixdARBPROC) extgl_GetProcAddress("glMultTransposeMatrixdARB"); - EXTGL_SANITY_CHECK(ARB_transpose_matrix) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_transpose_matrix) } -static void extgl_InitEXTDrawRangeElements() +static void extgl_InitEXTDrawRangeElements(JNIEnv *env, jobject ext_set) { -#ifdef GL_EXT_draw_range_elements - if (!extgl_Extensions.EXT_draw_range_elements) + if (!extgl_Extensions.GL_EXT_draw_range_elements) return; glDrawRangeElementsEXT = (glDrawRangeElementsEXTPROC) extgl_GetProcAddress("glDrawRangeElementsEXT"); - EXTGL_SANITY_CHECK(EXT_draw_range_elements) -#endif + EXTGL_SANITY_CHECK(env, ext_set, GL_EXT_draw_range_elements) } -static void extgl_InitARBMultitexture() +static void extgl_InitARBMultitexture(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_multitexture - if (!extgl_Extensions.ARB_multitexture) + if (!extgl_Extensions.GL_ARB_multitexture) return; glActiveTextureARB = (glActiveTextureARBPROC) extgl_GetProcAddress("glActiveTextureARB"); glClientActiveTextureARB = (glClientActiveTextureARBPROC) extgl_GetProcAddress("glClientActiveTextureARB"); @@ -2550,8 +2351,7 @@ static void extgl_InitARBMultitexture() glMultiTexCoord4ivARB = (glMultiTexCoord4ivARBPROC) extgl_GetProcAddress("glMultiTexCoord4ivARB"); glMultiTexCoord4sARB = (glMultiTexCoord4sARBPROC) extgl_GetProcAddress("glMultiTexCoord4sARB"); glMultiTexCoord4svARB = (glMultiTexCoord4svARBPROC) extgl_GetProcAddress("glMultiTexCoord4svARB"); - EXTGL_SANITY_CHECK(ARB_multitexture) -#endif /* GL_ARB_multitexture */ + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_multitexture) } static void extgl_InitGLU12(void) @@ -2609,9 +2409,9 @@ static void extgl_InitGLU12(void) gluUnProject = (gluUnProjectPROC) extgl_GetProcAddress("gluUnProject"); } -static void extgl_InitGLU13(void) +static void extgl_InitGLU13(JNIEnv *env, jobject ext_set) { - if (extgl_Extensions.glu.GLU13 != 1) + if (extgl_Extensions.GLU13 != 1) return; gluUnProject4 = (gluUnProject4PROC) extgl_GetProcAddress("gluUnProject4"); gluBuild1DMipmapLevels = (gluBuild1DMipmapLevelsPROC) extgl_GetProcAddress("gluBuild1DMipmapLevels"); @@ -2620,21 +2420,21 @@ static void extgl_InitGLU13(void) gluBuild3DMipmaps = (gluBuild3DMipmapsPROC) extgl_GetProcAddress("gluBuild3DMipmaps"); gluNurbsCallbackData = (gluNurbsCallbackDataPROC) extgl_GetProcAddress("gluNurbsCallbackData"); gluCheckExtension = (gluCheckExtensionPROC) extgl_GetProcAddress("gluCheckExtension"); - EXTGL_SANITY_CHECK(glu.GLU13) + EXTGL_SANITY_CHECK(env, ext_set, GLU13) } -static void extgl_InitEXTNurbsTesselator(void) +static void extgl_InitEXTNurbsTesselator(JNIEnv *env, jobject ext_set) { - if (!extgl_Extensions.glu.EXT_nurbs_tessellator) + if (!extgl_Extensions.GLU_EXT_nurbs_tessellator) return; gluNurbsCallbackDataEXT = (gluNurbsCallbackDataEXTPROC) extgl_GetProcAddress("gluNurbsCallbackDataEXT"); - EXTGL_SANITY_CHECK(glu.EXT_nurbs_tessellator) + EXTGL_SANITY_CHECK(env, ext_set, GLU_EXT_nurbs_tessellator) } #ifdef _X11 -static void extgl_InitGLX13(void) +static void extgl_InitGLX13(JNIEnv *env, jobject ext_set) { - if (extgl_Extensions.glx.GLX13 != 1) + if (extgl_Extensions.GLX13 != 1) return; glXGetFBConfigs = (glXGetFBConfigsPROC) extgl_GetProcAddress("glXGetFBConfigs"); glXChooseFBConfig = (glXChooseFBConfigPROC) extgl_GetProcAddress("glXChooseFBConfig"); @@ -2654,10 +2454,10 @@ static void extgl_InitGLX13(void) glXQueryContext = (glXQueryContextPROC) extgl_GetProcAddress("glXQueryContext"); glXSelectEvent = (glXSelectEventPROC) extgl_GetProcAddress("glXSelectEvent"); glXGetSelectedEvent = (glXGetSelectedEventPROC) extgl_GetProcAddress("glXGetSelectedEvent"); - EXTGL_SANITY_CHECK(glx.GLX13) + EXTGL_SANITY_CHECK(env, ext_set, GLX13) } -static int extgl_InitGLX12(void) +static bool extgl_InitGLX12(void) { glXChooseVisual = (glXChooseVisualPROC) extgl_GetProcAddress("glXChooseVisual"); glXCopyContext = (glXCopyContextPROC) extgl_GetProcAddress("glXCopyContext"); @@ -2679,32 +2479,32 @@ static int extgl_InitGLX12(void) glXGetClientString = (glXGetClientStringPROC) extgl_GetProcAddress("glXGetClientString"); glXQueryServerString = (glXQueryServerStringPROC) extgl_GetProcAddress("glXQueryServerString"); glXQueryExtensionsString = (glXQueryExtensionsStringPROC) extgl_GetProcAddress("glXQueryExtensionsString"); - return extgl_error; + return !extgl_error; } -static void extgl_InitGLXSupportedExtensions(Display *disp, int screen) +static void extgl_InitGLXSupportedExtensions(JNIEnv *env, jobject ext_set, Display *disp, int screen) { - extgl_Extensions.glx.EXT_visual_info = GLXQueryExtension(disp, screen, "GLX_EXT_visual_info"); - extgl_Extensions.glx.EXT_visual_rating = GLXQueryExtension(disp, screen, "GLX_EXT_visual_rating"); + extgl_Extensions.GLX_EXT_visual_info = GLXQueryExtension(env, ext_set, disp, screen, "GLX_EXT_visual_info"); + extgl_Extensions.GLX_EXT_visual_rating = GLXQueryExtension(env, ext_set, disp, screen, "GLX_EXT_visual_rating"); } -int extgl_InitGLX(Display *disp, int screen) +bool extgl_InitGLX(JNIEnv *env, jobject ext_set, Display *disp, int screen) { int major, minor; /* Assume glx ver >= 1.2 */ - extgl_Extensions.glx.GLX12 = 1; + extgl_Extensions.GLX12 = true; glXGetProcAddressARB = (glXGetProcAddressARBPROC) dlsym(lib_gl_handle, "glXGetProcAddressARB"); if (glXGetProcAddressARB == NULL) - return 1; - if (extgl_InitGLX12() != 0) - return 1; - extgl_InitGLXSupportedExtensions(disp, screen); + return false; + if (!extgl_InitGLX12()) + return false; + extgl_InitGLXSupportedExtensions(env, ext_set, disp, screen); if (glXQueryVersion(disp, &major, &minor) != True) - return 1; + return false; if (major > 1 || (major == 1 && minor >= 3)) - extgl_Extensions.glx.GLX13 = 1; - extgl_InitGLX13(); - return 0; + extgl_Extensions.GLX13 = true; + extgl_InitGLX13(env, ext_set); + return true; } #endif @@ -3049,23 +2849,20 @@ static void extgl_InitOpenGL1_1(void) glViewport = (glViewportPROC) extgl_GetProcAddress("glViewport"); } -static void extgl_InitOpenGL1_2() +static void extgl_InitOpenGL1_2(JNIEnv *env, jobject ext_set) { -#ifdef GL_VERSION_1_2 if (!extgl_Extensions.OpenGL12) return; glTexImage3D = (glTexImage3DPROC) extgl_GetProcAddress("glTexImage3D"); glTexSubImage3D = (glTexSubImage3DPROC) extgl_GetProcAddress("glTexSubImage3D"); glCopyTexSubImage3D = (glCopyTexSubImage3DPROC) extgl_GetProcAddress("glCopyTexSubImage3D"); glDrawRangeElements = (glDrawRangeElementsPROC) extgl_GetProcAddress("glDrawRangeElements"); - EXTGL_SANITY_CHECK(OpenGL12) -#endif /* GL_VERSION_1_2 */ + EXTGL_SANITY_CHECK(env, ext_set, OpenGL12) } -static void extgl_InitARBImaging() +static void extgl_InitARBImaging(JNIEnv *env, jobject ext_set) { -#ifdef GL_ARB_imaging - if (!extgl_Extensions.ARB_imaging) + if (!extgl_Extensions.GL_ARB_imaging) return; glBlendColor = (glBlendColorPROC) extgl_GetProcAddress("glBlendColor"); glBlendEquation = (glBlendEquationPROC) extgl_GetProcAddress("glBlendEquation"); @@ -3101,13 +2898,11 @@ static void extgl_InitARBImaging() glMinmax = (glMinmaxPROC) extgl_GetProcAddress("glMinmax"); glResetHistogram = (glResetHistogramPROC) extgl_GetProcAddress("glResetHistogram"); glResetMinmax = (glResetMinmaxPROC) extgl_GetProcAddress("glResetMinmax"); - EXTGL_SANITY_CHECK(ARB_imaging) -#endif /* GL_ARB_imaging */ + EXTGL_SANITY_CHECK(env, ext_set, GL_ARB_imaging) } -static void extgl_InitOpenGL1_3() +static void extgl_InitOpenGL1_3(JNIEnv *env, jobject ext_set) { -#ifdef GL_VERSION_1_3 if (!extgl_Extensions.OpenGL13) return; glActiveTexture = (glActiveTexturePROC) extgl_GetProcAddress("glActiveTexture"); @@ -3162,13 +2957,11 @@ static void extgl_InitOpenGL1_3() glGetCompressedTexImage = (glGetCompressedTexImagePROC) extgl_GetProcAddress("glGetCompressedTexImage"); glSampleCoverage = (glSampleCoveragePROC) extgl_GetProcAddress("glSampleCoverage"); - EXTGL_SANITY_CHECK(OpenGL13) -#endif /* GL_VERSION_1_3 */ + EXTGL_SANITY_CHECK(env, ext_set, OpenGL13) } -static void extgl_InitOpenGL1_4() +static void extgl_InitOpenGL1_4(JNIEnv *env, jobject ext_set) { -#ifdef GL_VERSION_1_4 if (!extgl_Extensions.OpenGL14) return; glBlendColor = (glBlendColorPROC) extgl_GetProcAddress("glBlendColor"); @@ -3216,272 +3009,263 @@ static void extgl_InitOpenGL1_4() glWindowPos3fv = (glWindowPos3fvPROC) extgl_GetProcAddress("glWindowPos3fv"); glWindowPos3iv = (glWindowPos3ivPROC) extgl_GetProcAddress("glWindowPos3iv"); glWindowPos3sv = (glWindowPos3svPROC) extgl_GetProcAddress("glWindowPos3sv"); - EXTGL_SANITY_CHECK(OpenGL14) -#endif /* GL_VERSION_1_4 */ + EXTGL_SANITY_CHECK(env, ext_set, OpenGL14) } -static void extgl_InitGLUSupportedExtensions() +static void extgl_InitGLUSupportedExtensions(JNIEnv *env, jobject ext_set) { char *s = (char*) gluGetString(GLU_VERSION); if (!s) return; s = strstr(s, "1."); - extgl_Extensions.glu.GLU12 = 0; - extgl_Extensions.glu.GLU13 = 0; + extgl_Extensions.GLU12 = 0; + extgl_Extensions.GLU13 = 0; if (s != NULL) { if( s[2] >= '3' ) { - extgl_Extensions.glu.GLU12 = 1; - extgl_Extensions.glu.GLU13 = 1; + extgl_Extensions.GLU12 = 1; + extgl_Extensions.GLU13 = 1; } if( s[2] == '2' ) { - extgl_Extensions.glu.GLU12 = 1; + extgl_Extensions.GLU12 = 1; } } - extgl_Extensions.glu.EXT_nurbs_tessellator = GLUQueryExtension("GLU_EXT_nurbs_tessellator"); - extgl_Extensions.glu.EXT_object_space_tess = GLUQueryExtension("GLU_EXT_object_space_tess"); + extgl_Extensions.GLU_EXT_nurbs_tessellator = GLUQueryExtension(env, ext_set, "GLU_EXT_nurbs_tessellator"); + extgl_Extensions.GLU_EXT_object_space_tess = GLUQueryExtension(env, ext_set, "GLU_EXT_object_space_tess"); } -static void extgl_InitSupportedExtensions() +static void extgl_InitSupportedExtensions(JNIEnv *env, jobject ext_set) { char *s = (char*) glGetString(GL_VERSION); if (!s) return; s = strstr(s, "1."); - if (s == NULL) - { - extgl_Extensions.OpenGL12 = 0; - extgl_Extensions.OpenGL13 = 0; - extgl_Extensions.OpenGL14 = 0; - } - else - { - extgl_Extensions.OpenGL12 = 0; - extgl_Extensions.OpenGL13 = 0; - extgl_Extensions.OpenGL14 = 0; + extgl_Extensions.OpenGL12 = false; + extgl_Extensions.OpenGL13 = false; + extgl_Extensions.OpenGL14 = false; - if( s[2] >= '4' ) - { - extgl_Extensions.OpenGL12 = 1; - extgl_Extensions.OpenGL13 = 1; - extgl_Extensions.OpenGL14 = 1; - } - if( s[2] == '3' ) - { - extgl_Extensions.OpenGL12 = 1; - extgl_Extensions.OpenGL13 = 1; - } - if( s[2] == '2' ) - { - extgl_Extensions.OpenGL12 = 1; + if (s != NULL) + { + // Fall trhough + switch (s[2]) { + case '4': + extgl_Extensions.OpenGL14 = true; + insertExtension(env, ext_set, "OpenGL14"); + case '3': + extgl_Extensions.OpenGL13 = true; + insertExtension(env, ext_set, "OpenGL13"); + case '2': + extgl_Extensions.OpenGL12 = true; + insertExtension(env, ext_set, "OpenGL12"); + break; } } - extgl_Extensions.ARB_depth_texture = GLQueryExtension("GL_ARB_depth_texture"); - extgl_Extensions.ARB_fragment_program = GLQueryExtension("GL_ARB_fragment_program"); - extgl_Extensions.ARB_imaging = GLQueryExtension("GL_ARB_imaging"); - extgl_Extensions.ARB_matrix_palette = GLQueryExtension("GL_ARB_matrix_palette"); - extgl_Extensions.ARB_multisample = GLQueryExtension("GL_ARB_multisample"); - extgl_Extensions.ARB_multitexture = GLQueryExtension("GL_ARB_multitexture"); - extgl_Extensions.ARB_point_parameters = GLQueryExtension("GL_ARB_point_parameters"); - extgl_Extensions.ARB_shadow = GLQueryExtension("GL_ARB_shadow"); - extgl_Extensions.ARB_shadow_ambient = GLQueryExtension("GL_ARB_shadow_ambient"); - extgl_Extensions.ARB_texture_border_clamp = GLQueryExtension("GL_ARB_texture_border_clamp"); - extgl_Extensions.ARB_texture_compression = GLQueryExtension("GL_ARB_texture_compression"); - extgl_Extensions.ARB_texture_cube_map = GLQueryExtension("GL_ARB_texture_cube_map"); - extgl_Extensions.ARB_texture_env_add = GLQueryExtension("GL_ARB_texture_env_add"); - extgl_Extensions.ARB_texture_env_combine = GLQueryExtension("GL_ARB_texture_env_combine"); - extgl_Extensions.ARB_texture_env_crossbar = GLQueryExtension("GL_ARB_texture_env_crossbar"); - extgl_Extensions.ARB_texture_env_dot3 = GLQueryExtension("GL_ARB_texture_env_dot3"); - extgl_Extensions.ARB_texture_mirrored_repeat = GLQueryExtension("GL_ARB_texture_mirrored_repeat"); - extgl_Extensions.ARB_transpose_matrix = GLQueryExtension("GL_ARB_transpose_matrix"); - extgl_Extensions.ARB_vertex_blend = GLQueryExtension("GL_ARB_vertex_blend"); - extgl_Extensions.ARB_vertex_buffer_object = GLQueryExtension("GL_ARB_vertex_buffer_object"); - extgl_Extensions.ARB_vertex_program = GLQueryExtension("GL_ARB_vertex_program"); - extgl_Extensions.ARB_window_pos = GLQueryExtension("GL_ARB_window_pos"); - extgl_Extensions.EXT_abgr = GLQueryExtension("GL_EXT_abgr"); - extgl_Extensions.EXT_bgra = GLQueryExtension("GL_EXT_bgra"); - extgl_Extensions.EXT_blend_func_separate = GLQueryExtension("GL_EXT_blend_function_separate"); - extgl_Extensions.EXT_compiled_vertex_array = GLQueryExtension("GL_EXT_compiled_vertex_array"); - extgl_Extensions.EXT_cull_vertex = GLQueryExtension("GL_EXT_cull_vertex"); - extgl_Extensions.EXT_draw_range_elements = GLQueryExtension("GL_EXT_draw_range_elements"); - extgl_Extensions.EXT_fog_coord = GLQueryExtension("GL_EXT_fog_coord"); - extgl_Extensions.EXT_multi_draw_arrays = GLQueryExtension("GL_EXT_multi_draw_arrays"); - extgl_Extensions.EXT_point_parameters = GLQueryExtension("GL_EXT_point_parameters"); - extgl_Extensions.EXT_secondary_color = GLQueryExtension("GL_EXT_secondary_color"); - extgl_Extensions.EXT_separate_specular_color = GLQueryExtension("GL_EXT_separate_specular_color"); - extgl_Extensions.EXT_shadow_funcs = GLQueryExtension("GL_EXT_shadow_funcs"); - extgl_Extensions.EXT_stencil_two_side = GLQueryExtension("GL_EXT_stencil_two_side"); - extgl_Extensions.EXT_stencil_wrap = GLQueryExtension("GL_EXT_stencil_wrap"); - extgl_Extensions.EXT_texture_compression_s3tc = GLQueryExtension("GL_EXT_texture_compression_s3tc"); - extgl_Extensions.EXT_texture_env_combine = GLQueryExtension("GL_EXT_texture_env_combine"); - extgl_Extensions.EXT_texture_filter_anisotropic = GLQueryExtension("GL_EXT_texture_filter_anisotropic"); - extgl_Extensions.EXT_texture_lod_bias = GLQueryExtension("GL_EXT_texture_lod_bias"); - extgl_Extensions.EXT_vertex_shader = GLQueryExtension("GL_EXT_vertex_shader"); - extgl_Extensions.EXT_vertex_weighting = GLQueryExtension("GL_EXT_vertex_weighting"); - extgl_Extensions.ATI_element_array = GLQueryExtension("GL_ATI_element_array"); - extgl_Extensions.ATI_envmap_bumpmap = GLQueryExtension("GL_ATI_envmap_bumpmap"); - extgl_Extensions.ATI_fragment_shader = GLQueryExtension("GL_ATI_fragment_shader"); - extgl_Extensions.ATI_pn_triangles = GLQueryExtension("GL_ATI_pn_triangles"); - extgl_Extensions.ATI_point_cull_mode = GLQueryExtension("GL_ATI_point_cull_mode"); - extgl_Extensions.ATI_separate_stencil = GLQueryExtension("GL_ATI_separate_stencil"); - extgl_Extensions.ATI_text_fragment_shader = GLQueryExtension("GL_ATI_text_fragment_shader"); - extgl_Extensions.ATI_texture_mirror_once = GLQueryExtension("GL_ATI_texture_mirror_once"); - extgl_Extensions.ATI_vertex_array_object = GLQueryExtension("GL_ATI_vertex_array_object"); - extgl_Extensions.ATI_vertex_streams = GLQueryExtension("GL_ATI_vertex_streams"); - extgl_Extensions.ATIX_point_sprites = GLQueryExtension("GL_ATIX_point_sprites"); - extgl_Extensions.ATIX_texture_env_route = GLQueryExtension("GL_ATIX_texture_env_route"); - extgl_Extensions.HP_occlusion_test = GLQueryExtension("GL_HP_occlusion_test"); - extgl_Extensions.NV_blend_square = GLQueryExtension("GL_NV_blend_square"); - extgl_Extensions.NV_copy_depth_to_color = GLQueryExtension("GL_NV_copy_depth_to_color"); - extgl_Extensions.NV_depth_clamp = GLQueryExtension("GL_NV_depth_clamp"); - extgl_Extensions.NV_element_array = GLQueryExtension("GL_NV_element_array"); - extgl_Extensions.NV_evaluators = GLQueryExtension("GL_NV_evaluators"); - extgl_Extensions.NV_fence = GLQueryExtension("GL_NV_fence"); - extgl_Extensions.NV_float_buffer = GLQueryExtension("GL_NV_float_buffer"); - extgl_Extensions.NV_fog_distance = GLQueryExtension("GL_NV_fog_distance"); - extgl_Extensions.NV_fragment_program = GLQueryExtension("GL_NV_fragment_program"); - extgl_Extensions.NV_light_max_exponent = GLQueryExtension("GL_NV_light_max_exponent"); - extgl_Extensions.NV_occlusion_query = GLQueryExtension("GL_NV_occlusion_query"); - extgl_Extensions.NV_packed_depth_stencil = GLQueryExtension("GL_NV_packed_depth_stencil"); - extgl_Extensions.NV_point_sprite = GLQueryExtension("GL_NV_point_sprite"); - extgl_Extensions.NV_primitive_restart = GLQueryExtension("GL_NV_primitive_restart"); - extgl_Extensions.NV_register_combiners = GLQueryExtension("GL_NV_register_combiners"); - extgl_Extensions.NV_register_combiners2 = GLQueryExtension("GL_NV_register_combiners2"); - extgl_Extensions.NV_texgen_reflection = GLQueryExtension("GL_NV_texgen_reflection"); - extgl_Extensions.NV_texture_env_combine4 = GLQueryExtension("GL_NV_texture_env_combine4"); - extgl_Extensions.NV_texture_rectangle = GLQueryExtension("GL_NV_texture_rectangle"); - extgl_Extensions.NV_texture_shader = GLQueryExtension("GL_NV_texture_shader"); - extgl_Extensions.NV_texture_shader2 = GLQueryExtension("GL_NV_texture_shader2"); - extgl_Extensions.NV_texture_shader3 = GLQueryExtension("GL_NV_texture_shader3"); - extgl_Extensions.NV_vertex_array_range = GLQueryExtension("GL_NV_vertex_array_range"); - extgl_Extensions.NV_vertex_array_range2 = GLQueryExtension("GL_NV_vertex_array_range2"); - extgl_Extensions.NV_vertex_program = GLQueryExtension("GL_NV_vertex_program"); - extgl_Extensions.NV_vertex_program1_1 = GLQueryExtension("GL_NV_vertex_program1_1"); - extgl_Extensions.NV_vertex_program2 = GLQueryExtension("GL_NV_vertex_program2"); - extgl_Extensions.SGIS_generate_mipmap = GLQueryExtension("GL_SGIS_generate_mipmap"); - extgl_Extensions.SGIX_depth_texture = GLQueryExtension("GL_SGIX_depth_texture"); - extgl_Extensions.SGIX_shadow = GLQueryExtension("GL_SGIX_shadow"); + extgl_Extensions.GL_ARB_depth_texture = GLQueryExtension(env, ext_set, "GL_ARB_depth_texture"); + extgl_Extensions.GL_ARB_fragment_program = GLQueryExtension(env, ext_set, "GL_ARB_fragment_program"); + extgl_Extensions.GL_ARB_imaging = GLQueryExtension(env, ext_set, "GL_ARB_imaging"); + extgl_Extensions.GL_ARB_matrix_palette = GLQueryExtension(env, ext_set, "GL_ARB_matrix_palette"); + extgl_Extensions.GL_ARB_multisample = GLQueryExtension(env, ext_set, "GL_ARB_multisample"); + extgl_Extensions.GL_ARB_multitexture = GLQueryExtension(env, ext_set, "GL_ARB_multitexture"); + extgl_Extensions.GL_ARB_point_parameters = GLQueryExtension(env, ext_set, "GL_ARB_point_parameters"); + extgl_Extensions.GL_ARB_shadow = GLQueryExtension(env, ext_set, "GL_ARB_shadow"); + extgl_Extensions.GL_ARB_shadow_ambient = GLQueryExtension(env, ext_set, "GL_ARB_shadow_ambient"); + extgl_Extensions.GL_ARB_texture_border_clamp = GLQueryExtension(env, ext_set, "GL_ARB_texture_border_clamp"); + extgl_Extensions.GL_ARB_texture_compression = GLQueryExtension(env, ext_set, "GL_ARB_texture_compression"); + extgl_Extensions.GL_ARB_texture_cube_map = GLQueryExtension(env, ext_set, "GL_ARB_texture_cube_map"); + extgl_Extensions.GL_ARB_texture_env_add = GLQueryExtension(env, ext_set, "GL_ARB_texture_env_add"); + extgl_Extensions.GL_ARB_texture_env_combine = GLQueryExtension(env, ext_set, "GL_ARB_texture_env_combine"); + extgl_Extensions.GL_ARB_texture_env_crossbar = GLQueryExtension(env, ext_set, "GL_ARB_texture_env_crossbar"); + extgl_Extensions.GL_ARB_texture_env_dot3 = GLQueryExtension(env, ext_set, "GL_ARB_texture_env_dot3"); + extgl_Extensions.GL_ARB_texture_mirrored_repeat = GLQueryExtension(env, ext_set, "GL_ARB_texture_mirrored_repeat"); + extgl_Extensions.GL_ARB_transpose_matrix = GLQueryExtension(env, ext_set, "GL_ARB_transpose_matrix"); + extgl_Extensions.GL_ARB_vertex_blend = GLQueryExtension(env, ext_set, "GL_ARB_vertex_blend"); + extgl_Extensions.GL_ARB_vertex_buffer_object = GLQueryExtension(env, ext_set, "GL_ARB_vertex_buffer_object"); + extgl_Extensions.GL_ARB_vertex_program = GLQueryExtension(env, ext_set, "GL_ARB_vertex_program"); + extgl_Extensions.GL_ARB_window_pos = GLQueryExtension(env, ext_set, "GL_ARB_window_pos"); + extgl_Extensions.GL_EXT_abgr = GLQueryExtension(env, ext_set, "GL_EXT_abgr"); + extgl_Extensions.GL_EXT_bgra = GLQueryExtension(env, ext_set, "GL_EXT_bgra"); + extgl_Extensions.GL_EXT_blend_func_separate = GLQueryExtension(env, ext_set, "GL_EXT_blend_function_separate"); + extgl_Extensions.GL_EXT_compiled_vertex_array = GLQueryExtension(env, ext_set, "GL_EXT_compiled_vertex_array"); + extgl_Extensions.GL_EXT_cull_vertex = GLQueryExtension(env, ext_set, "GL_EXT_cull_vertex"); + extgl_Extensions.GL_EXT_draw_range_elements = GLQueryExtension(env, ext_set, "GL_EXT_draw_range_elements"); + extgl_Extensions.GL_EXT_fog_coord = GLQueryExtension(env, ext_set, "GL_EXT_fog_coord"); + extgl_Extensions.GL_EXT_multi_draw_arrays = GLQueryExtension(env, ext_set, "GL_EXT_multi_draw_arrays"); + extgl_Extensions.GL_EXT_point_parameters = GLQueryExtension(env, ext_set, "GL_EXT_point_parameters"); + extgl_Extensions.GL_EXT_secondary_color = GLQueryExtension(env, ext_set, "GL_EXT_secondary_color"); + extgl_Extensions.GL_EXT_separate_specular_color = GLQueryExtension(env, ext_set, "GL_EXT_separate_specular_color"); + extgl_Extensions.GL_EXT_shadow_funcs = GLQueryExtension(env, ext_set, "GL_EXT_shadow_funcs"); + extgl_Extensions.GL_EXT_stencil_two_side = GLQueryExtension(env, ext_set, "GL_EXT_stencil_two_side"); + extgl_Extensions.GL_EXT_stencil_wrap = GLQueryExtension(env, ext_set, "GL_EXT_stencil_wrap"); + extgl_Extensions.GL_EXT_texture_compression_s3tc = GLQueryExtension(env, ext_set, "GL_EXT_texture_compression_s3tc"); + extgl_Extensions.GL_EXT_texture_env_combine = GLQueryExtension(env, ext_set, "GL_EXT_texture_env_combine"); + extgl_Extensions.GL_EXT_texture_filter_anisotropic = GLQueryExtension(env, ext_set, "GL_EXT_texture_filter_anisotropic"); + extgl_Extensions.GL_EXT_texture_lod_bias = GLQueryExtension(env, ext_set, "GL_EXT_texture_lod_bias"); + extgl_Extensions.GL_EXT_vertex_shader = GLQueryExtension(env, ext_set, "GL_EXT_vertex_shader"); + extgl_Extensions.GL_EXT_vertex_weighting = GLQueryExtension(env, ext_set, "GL_EXT_vertex_weighting"); + extgl_Extensions.GL_ATI_element_array = GLQueryExtension(env, ext_set, "GL_ATI_element_array"); + extgl_Extensions.GL_ATI_envmap_bumpmap = GLQueryExtension(env, ext_set, "GL_ATI_envmap_bumpmap"); + extgl_Extensions.GL_ATI_fragment_shader = GLQueryExtension(env, ext_set, "GL_ATI_fragment_shader"); + extgl_Extensions.GL_ATI_pn_triangles = GLQueryExtension(env, ext_set, "GL_ATI_pn_triangles"); + extgl_Extensions.GL_ATI_point_cull_mode = GLQueryExtension(env, ext_set, "GL_ATI_point_cull_mode"); + extgl_Extensions.GL_ATI_separate_stencil = GLQueryExtension(env, ext_set, "GL_ATI_separate_stencil"); + extgl_Extensions.GL_ATI_text_fragment_shader = GLQueryExtension(env, ext_set, "GL_ATI_text_fragment_shader"); + extgl_Extensions.GL_ATI_texture_mirror_once = GLQueryExtension(env, ext_set, "GL_ATI_texture_mirror_once"); + extgl_Extensions.GL_ATI_vertex_array_object = GLQueryExtension(env, ext_set, "GL_ATI_vertex_array_object"); + extgl_Extensions.GL_ATI_vertex_streams = GLQueryExtension(env, ext_set, "GL_ATI_vertex_streams"); + extgl_Extensions.GL_ATIX_point_sprites = GLQueryExtension(env, ext_set, "GL_ATIX_point_sprites"); + extgl_Extensions.GL_ATIX_texture_env_route = GLQueryExtension(env, ext_set, "GL_ATIX_texture_env_route"); + extgl_Extensions.GL_HP_occlusion_test = GLQueryExtension(env, ext_set, "GL_HP_occlusion_test"); + extgl_Extensions.GL_NV_blend_square = GLQueryExtension(env, ext_set, "GL_NV_blend_square"); + extgl_Extensions.GL_NV_copy_depth_to_color = GLQueryExtension(env, ext_set, "GL_NV_copy_depth_to_color"); + extgl_Extensions.GL_NV_depth_clamp = GLQueryExtension(env, ext_set, "GL_NV_depth_clamp"); + extgl_Extensions.GL_NV_element_array = GLQueryExtension(env, ext_set, "GL_NV_element_array"); + extgl_Extensions.GL_NV_evaluators = GLQueryExtension(env, ext_set, "GL_NV_evaluators"); + extgl_Extensions.GL_NV_fence = GLQueryExtension(env, ext_set, "GL_NV_fence"); + extgl_Extensions.GL_NV_float_buffer = GLQueryExtension(env, ext_set, "GL_NV_float_buffer"); + extgl_Extensions.GL_NV_fog_distance = GLQueryExtension(env, ext_set, "GL_NV_fog_distance"); + extgl_Extensions.GL_NV_fragment_program = GLQueryExtension(env, ext_set, "GL_NV_fragment_program"); + extgl_Extensions.GL_NV_light_max_exponent = GLQueryExtension(env, ext_set, "GL_NV_light_max_exponent"); + extgl_Extensions.GL_NV_occlusion_query = GLQueryExtension(env, ext_set, "GL_NV_occlusion_query"); + extgl_Extensions.GL_NV_packed_depth_stencil = GLQueryExtension(env, ext_set, "GL_NV_packed_depth_stencil"); + extgl_Extensions.GL_NV_point_sprite = GLQueryExtension(env, ext_set, "GL_NV_point_sprite"); + extgl_Extensions.GL_NV_primitive_restart = GLQueryExtension(env, ext_set, "GL_NV_primitive_restart"); + extgl_Extensions.GL_NV_register_combiners = GLQueryExtension(env, ext_set, "GL_NV_register_combiners"); + extgl_Extensions.GL_NV_register_combiners2 = GLQueryExtension(env, ext_set, "GL_NV_register_combiners2"); + extgl_Extensions.GL_NV_texgen_reflection = GLQueryExtension(env, ext_set, "GL_NV_texgen_reflection"); + extgl_Extensions.GL_NV_texture_env_combine4 = GLQueryExtension(env, ext_set, "GL_NV_texture_env_combine4"); + extgl_Extensions.GL_NV_texture_rectangle = GLQueryExtension(env, ext_set, "GL_NV_texture_rectangle"); + extgl_Extensions.GL_NV_texture_shader = GLQueryExtension(env, ext_set, "GL_NV_texture_shader"); + extgl_Extensions.GL_NV_texture_shader2 = GLQueryExtension(env, ext_set, "GL_NV_texture_shader2"); + extgl_Extensions.GL_NV_texture_shader3 = GLQueryExtension(env, ext_set, "GL_NV_texture_shader3"); + extgl_Extensions.GL_NV_vertex_array_range = GLQueryExtension(env, ext_set, "GL_NV_vertex_array_range"); + extgl_Extensions.GL_NV_vertex_array_range2 = GLQueryExtension(env, ext_set, "GL_NV_vertex_array_range2"); + extgl_Extensions.GL_NV_vertex_program = GLQueryExtension(env, ext_set, "GL_NV_vertex_program"); + extgl_Extensions.GL_NV_vertex_program1_1 = GLQueryExtension(env, ext_set, "GL_NV_vertex_program1_1"); + extgl_Extensions.GL_NV_vertex_program2 = GLQueryExtension(env, ext_set, "GL_NV_vertex_program2"); + extgl_Extensions.GL_SGIS_generate_mipmap = GLQueryExtension(env, ext_set, "GL_SGIS_generate_mipmap"); + extgl_Extensions.GL_SGIX_depth_texture = GLQueryExtension(env, ext_set, "GL_SGIX_depth_texture"); + extgl_Extensions.GL_SGIX_shadow = GLQueryExtension(env, ext_set, "GL_SGIX_shadow"); } /* extgl_Init the extensions and load all the functions */ -int extgl_Initialize() +bool extgl_Initialize(JNIEnv *env, jobject ext_set) { - extgl_error = 0; + extgl_error = false; extgl_InitOpenGL1_1(); extgl_InitGLU12(); - if (extgl_error != 0) - return extgl_error; + if (extgl_error) + return false; - extgl_InitGLUSupportedExtensions(); - extgl_InitSupportedExtensions(); + extgl_InitGLUSupportedExtensions(env, ext_set); + extgl_InitSupportedExtensions(env, ext_set); - extgl_InitEXTNurbsTesselator(); + extgl_InitEXTNurbsTesselator(env, ext_set); /* first load the extensions */ - extgl_InitARBTransposeMatrix(); - extgl_InitARBMultisample(); - extgl_InitEXTCompiledVertexArray(); - extgl_InitEXTSecondaryColor(); - extgl_InitEXTFogCoord(); - extgl_InitNVVertexArrayRange(); - extgl_InitEXTPointParameters(); - extgl_InitNVRegisterCombiners(); - extgl_InitEXTVertexWeighting(); - extgl_InitNVVertexProgram(); - extgl_InitNVFence(); - extgl_InitNVRegisterCombiners2(); - extgl_InitATIPNTriangles(); - extgl_InitATISeparateStencil(); - extgl_InitARBPointParameters(); - extgl_InitARBVertexBlend(); - extgl_InitEXTMultiDrawArrays(); - extgl_InitARBMatrixPalette(); - extgl_InitEXTVertexShader(); - extgl_InitATIEnvmapBumpmap(); - extgl_InitATIFragmentShader(); - extgl_InitATIElementArray(); - extgl_InitATIVertexStreams(); - extgl_InitATIVertexArrayObject(); - extgl_InitNVOcclusionQuery(); - extgl_InitNVPointSprite(); - extgl_InitARBWindowPos(); - extgl_InitARBTextureCompression(); - extgl_InitEXTDrawRangeElements(); - extgl_InitEXTStencilTwoSide(); - extgl_InitARBVertexProgram(); - extgl_InitARBVertexBufferObject(); - extgl_InitEXTCullVertex(); - extgl_InitEXTBlendFuncSeparate(); - extgl_InitARBImaging(); - extgl_InitARBMultitexture(); - extgl_InitNVElementArray(); - extgl_InitNVEvaluators(); - extgl_InitNVFragmentProgram(); - extgl_InitNVPrimitiveRestart(); - extgl_InitARBFragmentProgram(); + extgl_InitARBTransposeMatrix(env, ext_set); + extgl_InitARBMultisample(env, ext_set); + extgl_InitEXTCompiledVertexArray(env, ext_set); + extgl_InitEXTSecondaryColor(env, ext_set); + extgl_InitEXTFogCoord(env, ext_set); + extgl_InitNVVertexArrayRange(env, ext_set); + extgl_InitEXTPointParameters(env, ext_set); + extgl_InitNVRegisterCombiners(env, ext_set); + extgl_InitEXTVertexWeighting(env, ext_set); + extgl_InitNVVertexProgram(env, ext_set); + extgl_InitNVFence(env, ext_set); + extgl_InitNVRegisterCombiners2(env, ext_set); + extgl_InitATIPNTriangles(env, ext_set); + extgl_InitATISeparateStencil(env, ext_set); + extgl_InitARBPointParameters(env, ext_set); + extgl_InitARBVertexBlend(env, ext_set); + extgl_InitEXTMultiDrawArrays(env, ext_set); + extgl_InitARBMatrixPalette(env, ext_set); + extgl_InitEXTVertexShader(env, ext_set); + extgl_InitATIEnvmapBumpmap(env, ext_set); + extgl_InitATIFragmentShader(env, ext_set); + extgl_InitATIElementArray(env, ext_set); + extgl_InitATIVertexStreams(env, ext_set); + extgl_InitATIVertexArrayObject(env, ext_set); + extgl_InitNVOcclusionQuery(env, ext_set); + extgl_InitNVPointSprite(env, ext_set); + extgl_InitARBWindowPos(env, ext_set); + extgl_InitARBTextureCompression(env, ext_set); + extgl_InitEXTDrawRangeElements(env, ext_set); + extgl_InitEXTStencilTwoSide(env, ext_set); + extgl_InitARBVertexProgram(env, ext_set); + extgl_InitARBVertexBufferObject(env, ext_set); + extgl_InitEXTCullVertex(env, ext_set); + extgl_InitEXTBlendFuncSeparate(env, ext_set); + extgl_InitARBImaging(env, ext_set); + extgl_InitARBMultitexture(env, ext_set); + extgl_InitNVElementArray(env, ext_set); + extgl_InitNVEvaluators(env, ext_set); + extgl_InitNVFragmentProgram(env, ext_set); + extgl_InitNVPrimitiveRestart(env, ext_set); + extgl_InitARBFragmentProgram(env, ext_set); /* now load core opengl */ - extgl_InitOpenGL1_2(); - extgl_InitOpenGL1_3(); - extgl_InitOpenGL1_4(); + extgl_InitOpenGL1_2(env, ext_set); + extgl_InitOpenGL1_3(env, ext_set); + extgl_InitOpenGL1_4(env, ext_set); - extgl_InitGLU13(); + extgl_InitGLU13(env, ext_set); #ifdef _WIN32 /* load WGL extensions */ - extgl_InitializeWGL(); + extgl_InitializeWGL(env, ext_set); #endif #ifdef _AGL /* load AGL extensions */ - extgl_InitializeAGL(); + extgl_InitializeAGL(env, ext_set); #endif - return 0; + return true; } #ifdef _X11 -int extgl_Open() +bool extgl_Open() { lib_gl_handle = dlopen("libGL.so.1", RTLD_LAZY | RTLD_GLOBAL); if (lib_gl_handle == NULL) { #ifdef _DEBUG printf("Error loading libGL.so.1: %s\n", dlerror()); #endif - return 1; + return false; } lib_glu_handle = dlopen("libGLU.so.1", RTLD_LAZY | RTLD_GLOBAL); if (lib_glu_handle == NULL) { #ifdef _DEBUG printf("Error loading libGLU.so.1: %s\n", dlerror()); #endif - return 1; + return false; } - return 0; + return true; } #endif /* X11 */ #ifdef _WIN32 -int extgl_Open(void) +bool extgl_Open(void) { // load the dynamic libraries for OpenGL // lib_gl_handle = LoadLibrary("opengl32.dll"); if (lib_gl_handle == NULL) - return 1; + return false; lib_glu_handle = LoadLibrary("glu32.dll"); if (lib_glu_handle == NULL) - return 1; - return 0; + return false; + return true; } #endif /* WIN32 */ #ifdef _AGL -int extgl_Open(void) +bool extgl_Open(void) { OSStatus err = aglInitEntryPoints(); if ( noErr != err ) @@ -3489,12 +3273,12 @@ int extgl_Open(void) // if we encountered an error while initializing OpenGL // we're hosed - return // - return 1; + return false; } // open gl framework initialized just fine // - return 0; + return true; } #endif /* _AGL */ diff --git a/src/native/common/extgl.h b/src/native/common/extgl.h index d0cf3651..9901da2a 100644 --- a/src/native/common/extgl.h +++ b/src/native/common/extgl.h @@ -165,6 +165,8 @@ WGL_NV_render_texture_rectangle #ifndef __EXTGL_H__ #define __EXTGL_H__ +#include + /*-----------------------------------------*/ /*-----------------------------------------*/ @@ -598,9 +600,6 @@ extern aglSurfaceTextureEXTPROC aglSurfaceTexture; /*************************************************************/ /* GLU functions */ -/* Extensions */ -#define GLU_EXT_object_space_tess 1 -#define GLU_EXT_nurbs_tessellator 1 /* Boolean */ #define GLU_FALSE 0 @@ -2153,9 +2152,6 @@ extern glViewportPROC glViewport; /* OpenGL 1.2 */ -#ifndef GL_VERSION_1_2 -#define GL_ARB_imaging 1 -#define GL_VERSION_1_2 1 #define GL_RESCALE_NORMAL 0x803A #define GL_CLAMP_TO_EDGE 0x812F #define GL_MAX_ELEMENTS_VERTICES 0x80E8 @@ -2351,12 +2347,9 @@ extern glDrawRangeElementsPROC glDrawRangeElements; extern glTexImage3DPROC glTexImage3D; extern glTexSubImage3DPROC glTexSubImage3D; extern glCopyTexSubImage3DPROC glCopyTexSubImage3D; -#endif /* GL_VERSION_1_2 */ /* OpenGL 1.3 */ -#ifndef GL_VERSION_1_3 -#define GL_VERSION_1_3 1 #define GL_TEXTURE0 0x84C0 #define GL_TEXTURE1 0x84C1 #define GL_TEXTURE2 0x84C2 @@ -2553,13 +2546,8 @@ extern glCompressedTexSubImage1DPROC glCompressedTexSubImage1D; extern glGetCompressedTexImagePROC glGetCompressedTexImage; extern glSampleCoveragePROC glSampleCoverage; -#endif /* GL_VERSION_1_3 */ - /* OpenGL 1.4 */ -#ifndef GL_VERSION_1_4 -#define GL_VERSION_1_4 - #define GL_GENERATE_MIPMAP 0x8191 #define GL_GENERATE_MIPMAP_HINT 0x8192 #define GL_DEPTH_COMPONENT16 0x81A5 @@ -2688,8 +2676,6 @@ extern glWindowPos3fvPROC glWindowPos3fv; extern glWindowPos3ivPROC glWindowPos3iv; extern glWindowPos3svPROC glWindowPos3sv; -#endif /* GL_VERSION_1_4 */ - /*-------------------------------------------------------------------*/ /*------------EXTENSIONS---------------------------------------------*/ /*-------------------------------------------------------------------*/ @@ -2698,8 +2684,6 @@ extern glWindowPos3svPROC glWindowPos3sv; /*------------ARB_MULTITEXTURE---------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_multitexture -#define GL_ARB_multitexture 1 #define GL_TEXTURE0_ARB 0x84C0 #define GL_TEXTURE1_ARB 0x84C1 #define GL_TEXTURE2_ARB 0x84C2 @@ -2806,15 +2790,10 @@ extern glMultiTexCoord4ivARBPROC glMultiTexCoord4ivARB; extern glMultiTexCoord4sARBPROC glMultiTexCoord4sARB; extern glMultiTexCoord4svARBPROC glMultiTexCoord4svARB; -#endif /* GL_ARB_multitexture */ - /*-------------------------------------------------------------------*/ /*------------ARB_TRANSPOSE_MATRIX-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_transpose_matrix -#define GL_ARB_transpose_matrix 1 - #define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 #define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 #define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 @@ -2830,15 +2809,10 @@ extern glLoadTransposeMatrixdARBPROC glLoadTransposeMatrixdARB; extern glMultTransposeMatrixfARBPROC glMultTransposeMatrixfARB; extern glMultTransposeMatrixdARBPROC glMultTransposeMatrixdARB; -#endif /* GL_ARB_transpose_matrix */ - /*-------------------------------------------------------------------*/ /*------------ARB_TEXTURE_COMPRESSION--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_texture_compression -#define GL_ARB_texture_compression 1 - #define GL_COMPRESSED_ALPHA_ARB 0x84E9 #define GL_COMPRESSED_LUMINANCE_ARB 0x84EA #define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB @@ -2867,15 +2841,10 @@ extern glCompressedTexSubImage2DARBPROC glCompressedTexSubImage2DARB; extern glCompressedTexSubImage1DARBPROC glCompressedTexSubImage1DARB; extern glGetCompressedTexImageARBPROC glGetCompressedTexImageARB; -#endif /* GL_ARB_texture_compression */ - /*-------------------------------------------------------------------*/ /*------------ARB_CUBE_MAP-------------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_texture_cube_map -#define GL_ARB_texture_cube_map 1 - #define GL_NORMAL_MAP_ARB 0x8511 #define GL_REFLECTION_MAP_ARB 0x8512 #define GL_TEXTURE_CUBE_MAP_ARB 0x8513 @@ -2889,42 +2858,27 @@ extern glGetCompressedTexImageARBPROC glGetCompressedTexImageARB; #define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C -#endif /* GL_ARB_texture_cube_map */ - /*-------------------------------------------------------------------*/ /*------------SGIX_SHADOW--------------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_SGIX_shadow -#define GL_SGIX_shadow 1 - #define GL_TEXTURE_COMPARE_SGIX 0x819A #define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B #define GL_TEXTURE_LEQUAL_R_SGIX 0x819C #define GL_TEXTURE_GEQUAL_R_SGIX 0x819D -#endif /* GL_SGIX_shadow */ - /*-------------------------------------------------------------------*/ /*------------SGIX_DEPTH_TEXTURE-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_SGIX_depth_texture -#define GL_SGIX_depth_texture 1 - #define GL_DEPTH_COMPONENT16_SGIX 0x81A5 #define GL_DEPTH_COMPONENT24_SGIX 0x81A6 #define GL_DEPTH_COMPONENT32_SGIX 0x81A7 -#endif /* GL_SGIX_depth_texture */ - /*-------------------------------------------------------------------*/ /*------------EXT_COMPILED_VERTEX_ARRAY------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_compiled_vertex_array -#define GL_EXT_compiled_vertex_array 1 - #define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 #define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 @@ -2934,15 +2888,10 @@ typedef void (APIENTRY * glUnlockArraysEXTPROC) (); extern glLockArraysEXTPROC glLockArraysEXT; extern glUnlockArraysEXTPROC glUnlockArraysEXT; -#endif /* GL_EXT_compiled_vertex_array */ - /*-------------------------------------------------------------------*/ /*------------ARB_TEXTURE_ENV_COMBINE--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_texture_env_combine -#define GL_ARB_texture_env_combine 1 - #define GL_COMBINE_ARB 0x8570 #define GL_COMBINE_RGB_ARB 0x8571 #define GL_COMBINE_ALPHA_ARB 0x8572 @@ -2965,48 +2914,27 @@ extern glUnlockArraysEXTPROC glUnlockArraysEXT; #define GL_OPERAND1_ALPHA_ARB 0x8599 #define GL_OPERAND2_ALPHA_ARB 0x859A -#endif /* GL_ARB_texture_env_combine */ - /*-------------------------------------------------------------------*/ /*------------ARB_TEXTURE_ENV_DOT3-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_texture_env_dot3 -#define GL_ARB_texture_env_dot3 1 - #define GL_DOT3_RGB_ARB 0x86AE #define GL_DOT3_RGBA_ARB 0x86AF -#endif /* GL_ARB_texture_env_dot3 */ - /*-------------------------------------------------------------------*/ /*------------ARB_TEXTURE_BORDER_CLAMP-------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_texture_border_clamp -#define GL_ARB_texture_border_clamp 1 - #define GL_CLAMP_TO_BORDER_ARB 0x812D -#endif /* GL_ARB_texture_border_clamp */ - /*-------------------------------------------------------------------*/ /*------------ARB_TEXTURE_ENV_ADD------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_texture_env_add -#define GL_ARB_texture_env_add 1 - - -#endif /* GL_ARB_texture_env_add */ - /*-------------------------------------------------------------------*/ /*------------EXT_SECONDARY_COLOR------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_secondary_color -#define GL_EXT_secondary_color 1 - #define GL_COLOR_SUM_EXT 0x8458 #define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 #define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A @@ -3051,15 +2979,10 @@ extern glSecondaryColor3usEXTPROC glSecondaryColor3usEXT; extern glSecondaryColor3usvEXTPROC glSecondaryColor3usvEXT; extern glSecondaryColorPointerEXTPROC glSecondaryColorPointerEXT; -#endif /* GL_EXT_secondary_color */ - /*-------------------------------------------------------------------*/ /*------------EXT_FOG_COORD------------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_fog_coord -#define GL_EXT_fog_coord 1 - #define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 #define GL_FOG_COORDINATE_EXT 0x8451 #define GL_FRAGMENT_DEPTH_EXT 0x8452 @@ -3081,15 +3004,10 @@ extern glFogCoorddEXTPROC glFogCoorddEXT; extern glFogCoorddvEXTPROC glFogCoorddvEXT; extern glFogCoordPointerEXTPROC glFogCoordPointerEXT; -#endif /* GL_EXT_fog_coord */ - /*-------------------------------------------------------------------*/ /*------------NV_VERTEX_ARRAY_RANGE----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_vertex_array_range -#define GL_NV_vertex_array_range 1 - #define GL_VERTEX_ARRAY_RANGE_NV 0x851D #define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E #define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F @@ -3122,26 +3040,16 @@ extern glXFreeMemoryNVPROC glXFreeMemoryNV; #endif /* X11 */ -#endif /* GL_NV_vertex_array_range */ - /*-------------------------------------------------------------------*/ /*------------NV_VERTEX_ARRAY_RANGE2---------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_vertex_array_range2 -#define GL_NV_vertex_array_range2 1 - #define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 -#endif /* GL_NV_vertex_array_range2 */ - /*-------------------------------------------------------------------*/ /*------------EXT_POINT_PARAMETERS-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_point_parameters -#define GL_EXT_point_parameters 1 - #define GL_POINT_SIZE_MIN_EXT 0x8126 #define GL_POINT_SIZE_MAX_EXT 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 @@ -3153,15 +3061,10 @@ typedef void (APIENTRY * glPointParameterfvEXTPROC) (GLenum pname, const GLfloat extern glPointParameterfEXTPROC glPointParameterfEXT; extern glPointParameterfvEXTPROC glPointParameterfvEXT; -#endif /* GL_EXT_point_parameters */ - /*-------------------------------------------------------------------*/ /*------------NV_REGISTER_COMBINERS----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_register_combiners -#define GL_NV_register_combiners 1 - #define GL_REGISTER_COMBINERS_NV 0x8522 #define GL_COMBINER0_NV 0x8550 #define GL_COMBINER1_NV 0x8551 @@ -3242,15 +3145,10 @@ extern glGetCombinerOutputParameterivNVPROC glGetCombinerOutputParameterivNV; extern glGetFinalCombinerInputParameterfvNVPROC glGetFinalCombinerInputParameterfvNV; extern glGetFinalCombinerInputParameterivNVPROC glGetFinalCombinerInputParameterivNV; -#endif /* GL_NV_register_combiners */ - /*-------------------------------------------------------------------*/ /*------------ARB_VERTEX_BUFFER_OBJECT----------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_vertex_buffer_object -#define GL_ARB_vertex_buffer_object 1 - #define GL_ARRAY_BUFFER_ARB 0x8892 #define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 #define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 @@ -3310,15 +3208,10 @@ extern glUnmapBufferARBPROC glUnmapBufferARB; extern glGetBufferParameterivARBPROC glGetBufferParameterivARB; extern glGetBufferPointervARBPROC glGetBufferPointervARB; -#endif /* GL_ARB_vertex_buffer_object */ - /*-------------------------------------------------------------------*/ /*------------ARB_MULTISAMPLE----------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_multisample -#define GL_ARB_multisample 1 - #define GL_MULTISAMPLE_ARB 0x809D #define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E #define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F @@ -3333,15 +3226,10 @@ typedef void (APIENTRY * glSampleCoverageARBPROC) (GLclampf value, GLboolean inv extern glSampleCoverageARBPROC glSampleCoverageARB; -#endif /* GL_ARB_multisample */ - /*-------------------------------------------------------------------*/ /*------------NV_TEXTURE_SHADER--------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_texture_shader -#define GL_NV_texture_shader 1 - #define GL_TEXTURE_SHADER_NV 0x86DE #define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 #define GL_SHADER_OPERATION_NV 0x86DF @@ -3413,93 +3301,58 @@ extern glSampleCoverageARBPROC glSampleCoverageARB; #define GL_TEXTURE_DT_SIZE_NV 0x871E #define GL_TEXTURE_MAG_SIZE_NV 0x871F -#endif /* GL_NV_texture_shader */ - /*-------------------------------------------------------------------*/ /*------------GL_NV_TEXTURE_RECTANGLE--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_texture_rectangle -#define GL_NV_texture_rectangle 1 - #define GL_TEXTURE_RECTANGLE_NV 0x84F5 #define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 #define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 -#endif /* GL_NV_texture_recrangle */ - /*-------------------------------------------------------------------*/ /*------------NV_TEXTURE_ENV_COMBINE4--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_texture_env_combine4 -#define GL_NV_texture_env_combine4 1 - #define GL_COMBINE4_NV 0x8503 #define GL_SOURCE3_RGB_NV 0x8583 #define GL_SOURCE3_ALPHA_NV 0x858B #define GL_OPERAND3_RGB_NV 0x8593 #define GL_OPERAND3_ALPHA_NV 0x859B -#endif /* GL_NV_texture_env_combine */ - /*-------------------------------------------------------------------*/ /*------------NV_FOG_DISTANCE----------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_fog_distance -#define GL_NV_fog_distance 1 - #define GL_FOG_DISTANCE_MODE_NV 0x855A #define GL_EYE_RADIAL_NV 0x855B #define GL_EYE_PLANE_ABSOLUTE_NV 0x855C -#endif /* GL_NV_fog_distance */ - /*-------------------------------------------------------------------*/ /*------------EXT_TEXTURE_FILTER_ANISOTROPIC-------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_EXT_texture_filter_anisotropic 1 - #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF -#endif /* GL_EXT_texture_filter_anisotropic */ - /*-------------------------------------------------------------------*/ /*------------SGIS_GENERATE_MIPMAP-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_SGIS_generate_mipmap -#define GL_SGIS_generate_mipmap 1 - #define GL_GENERATE_MIPMAP_SGIS 0x8191 #define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 -#endif /* GL_SGIS_generate_mipmap */ - /*-------------------------------------------------------------------*/ /*------------NV_TEXGEN_REFLECTION-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_texgen_reflection -#define GL_NV_texgen_reflection 1 - #define GL_NORMAL_MAP_NV 0x8511 #define GL_REFLECTION_MAP_NV 0x8512 -#endif /* GL_NV_texgen_reflection */ - /*-------------------------------------------------------------------*/ /*------------EXT_VERTEX_WEIGHTING-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_vertex_weighting -#define GL_EXT_vertex_weighting 1 - #define GL_MODELVIEW0_STACK_DEPTH_EXT 0x0BA3 /* alias to GL_MODELVIEW_STACK_DEPTH */ #define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 #define GL_MODELVIEW0_MATRIX_EXT 0x0BA6 /* alias to GL_MODELVIEW_MATRIX */ @@ -3522,15 +3375,10 @@ extern glVertexWeightfEXTPROC glVertexWeightfEXT; extern glVertexWeightfvEXTPROC glVertexWeightfvEXT; extern glVertexWeightPointerEXTPROC glVertexWeightPointerEXT; -#endif /* GL_EXT_vertex_weighting */ - /*-------------------------------------------------------------------*/ /*------------NV_VERTEX_PROGRAM--------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_vertex_program -#define GL_NV_vertex_program 1 - #define GL_VERTEX_PROGRAM_NV 0x8620 #define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 #define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 @@ -3745,15 +3593,10 @@ extern glVertexAttribs4fvNVPROC glVertexAttribs4fvNV; extern glVertexAttribs4dvNVPROC glVertexAttribs4dvNV; extern glVertexAttribs4ubvNVPROC glVertexAttribs4ubvNV; -#endif /* GL_NV_vertex_program */ - /*-------------------------------------------------------------------*/ /*------------NV_FENCE-----------------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_fence -#define GL_NV_fence 1 - #define GL_ALL_COMPLETED_NV 0x84F2 #define GL_FENCE_STATUS_NV 0x84F3 #define GL_FENCE_CONDITION_NV 0x84F4 @@ -3774,15 +3617,10 @@ extern glFinishFenceNVPROC glFinishFenceNV; extern glIsFenceNVPROC glIsFenceNV; extern glGetFenceivNVPROC glGetFenceivNV; -#endif /* GL_NV_fence */ - /*-------------------------------------------------------------------*/ /*------------NV_TEXTURE_SHADER2-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_texture_shader2 -#define GL_NV_texture_shader2 - #define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF #define GL_HILO_NV 0x86F4 #define GL_DSDT_NV 0x86F5 @@ -3812,48 +3650,28 @@ extern glGetFenceivNVPROC glGetFenceivNV; #define GL_DSDT_MAG_INTENSITY_NV 0x86DC #define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#endif /* GL_NV_texture_shader2 */ - /*-------------------------------------------------------------------*/ /*------------NV_BLEND_SQUARE----------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_blend_square -#define GL_NV_blend_square 1 - -#endif /* GL_NV_blend_square */ - /*-------------------------------------------------------------------*/ /*------------NV_LIGHT_MAX_EXPONENT----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_light_max_exponent -#define GL_NV_light_max_exponent 1 - #define GL_MAX_SHININESS_NV 0x8504 #define GL_MAX_SPOT_EXPONENT_NV 0x8505 -#endif /* GL_NV_light_max_exponent */ - /*-------------------------------------------------------------------*/ /*------------NV_PACKED_DEPTH_STENCIL--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_packed_depth_stencil -#define GL_NV_packed_depth_stencil 1 - #define GL_DEPTH_STENCIL_NV 0x84F9 #define GL_UNSIGNED_INT_24_8_NV 0x84FA -#endif /* GL_NV_packed_depth_stencil */ - /*-------------------------------------------------------------------*/ /*------------NV_REGISTER_COMBINERS2---------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_register_combiners2 -#define GL_NV_register_combiners2 - #define GL_PER_STAGE_CONSTANTS_NV 0x8535 typedef void (APIENTRY * glCombinerStageParameterfvNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); @@ -3862,51 +3680,31 @@ typedef void (APIENTRY * glGetCombinerStageParameterfvNVPROC) (GLenum stage, GLe extern glCombinerStageParameterfvNVPROC glCombinerStageParameterfvNV; extern glGetCombinerStageParameterfvNVPROC glGetCombinerStageParameterfvNV; -#endif /* GL_NV_register_combiners2 */ - /*-------------------------------------------------------------------*/ /*------------EXT_ABGR-----------------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_abgr -#define GL_EXT_abgr 1 - #define GL_ABGR_EXT 0x8000 -#endif /* GL_EXT_abgr */ - /*-------------------------------------------------------------------*/ /*------------EXT_STENCIL_WRAP---------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_stencil_wrap -#define GL_EXT_stencil_wrap 1 - #define GL_INCR_WRAP_EXT 0x8507 #define GL_DECR_WRAP_EXT 0x8508 -#endif /* GL_EXT_stencil_wrap */ - /*-------------------------------------------------------------------*/ /*------------EXT_TEXTURE_LOD_BIAS-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_texture_lod_bias -#define GL_EXT_texture_lod_bias 1 - #define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 #define GL_TEXTURE_LOD_BIAS_EXT 0x8501 #define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD -#endif /* GL_EXT_texture_lod_bias */ - /*-------------------------------------------------------------------*/ /*------------NV_EVALUATORS------------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_evaluators -#define GL_NV_evaluators 1 - #define GL_EVAL_2D_NV 0x86C0 #define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 #define GL_MAP_TESSELLATION_NV 0x86C2 @@ -3952,27 +3750,17 @@ extern glGetMapAttribParameterivNVPROC glGetMapAttribParameterivNV; extern glGetMapAttribParameterfvNVPROC glGetMapAttribParameterfvNV; extern glEvalMapsNVPROC glEvalMapsNV; -#endif /* GL_NV_evaluators */ - /*-------------------------------------------------------------------*/ /*------------NV_COPY_DEPTH_TO_COLOR---------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_copy_depth_to_color -#define GL_NV_copy_depth_to_color 1 - #define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E #define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F -#endif /* GL_NV_copy_depth_to_color */ - /*-------------------------------------------------------------------*/ /*------------ATI_PN_TRIANGLES---------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_pn_triangles -#define GL_ATI_pn_triangles 1 - #define GL_PN_TRIANGLES_ATI 0x87F0 #define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 #define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 @@ -3989,15 +3777,10 @@ typedef void (APIENTRY * glPNTrianglesfATIPROC) (GLenum pname, GLfloat param); extern glPNTrianglesiATIPROC glPNTrianglesiATI; extern glPNTrianglesfATIPROC glPNTrianglesfATI; -#endif /* GL_ATI_pn_triangles */ - /*-------------------------------------------------------------------*/ /*------------ARB_POINT_PARAMETERS-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_point_parameters -#define GL_ARB_point_parameters 1 - #define GL_POINT_SIZE_MIN_ARB 0x8126 #define GL_POINT_SIZE_MAX_ARB 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 @@ -4009,24 +3792,14 @@ typedef void (APIENTRY * glPointParameterfvARBPROC) (GLenum pname, GLfloat *para extern glPointParameterfARBPROC glPointParameterfARB; extern glPointParameterfvARBPROC glPointParameterfvARB; -#endif /* GL_ARB_point_parameters */ - /*-------------------------------------------------------------------*/ /*------------ARB_TEXTURE_ENV_CROSSBAR-------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_texture_env_crossbar -#define GL_ARB_texture_env_crossbar 1 - -#endif - /*-------------------------------------------------------------------*/ /*------------ARB_VERTEX_BLEND---------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_vertex_blend -#define GL_ARB_vertex_blend 1 - #define GL_MAX_VERTEX_UNITS_ARB 0x86A4 #define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 #define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 @@ -4092,30 +3865,20 @@ extern glWeightuivARBPROC glWeightuivARB; extern glWeightPointerARBPROC glWeightPointerARB; extern glVertexBlendARBPROC glVertexBlendARB; -#endif /* GL_ARB_vertex_blend */ - /*-------------------------------------------------------------------*/ /*------------EXT_MULTI_DRAW_ARRAYS----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_multi_draw_arrays -#define GL_EXT_multi_draw_arrays 1 - typedef void (APIENTRY * glMultiDrawArraysEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); typedef void (APIENTRY * glMultiDrawElementsEXTPROC) (GLenum mode, GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount); extern glMultiDrawArraysEXTPROC glMultiDrawArraysEXT; extern glMultiDrawElementsEXTPROC glMultiDrawElementsEXT; -#endif /* GL_EXT_multi_draw_arrays */ - /*-------------------------------------------------------------------*/ /*------------ARB_MATRIX_PALETTE-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_matrix_palette -#define GL_ARB_matrix_palette 1 - #define GL_MATRIX_PALETTE_ARB 0x8840 #define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 #define GL_MAX_PALETTE_MATRICES_ARB 0x8842 @@ -4139,15 +3902,10 @@ extern glMatrixIndexusvARBPROC glMatrixIndexusvARB; extern glMatrixIndexuivARBPROC glMatrixIndexuivARB; extern glMatrixIndexPointerARBPROC glMatrixIndexPointerARB; -#endif /* GL_ARB_matrix_palette */ - /*-------------------------------------------------------------------*/ /*------------EXT_VERTEX_SHADER--------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_vertex_shader -#define GL_EXT_vertex_shader 1 - #define GL_VERTEX_SHADER_EXT 0x8780 #define GL_VERTEX_SHADER_BINDING_EXT 0x8781 #define GL_OP_INDEX_EXT 0x8782 @@ -4345,15 +4103,10 @@ extern glGetLocalConstantBooleanvEXTPROC glGetLocalConstantBooleanvEXT; extern glGetLocalConstantIntegervEXTPROC glGetLocalConstantIntegervEXT; extern glGetLocalConstantFloatvEXTPROC glGetLocalConstantFloatvEXT; -#endif /* GL_EXT_vertex_shader */ - /*-------------------------------------------------------------------*/ /*------------ATI_ENVMAP_BUMPMAP-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_envmap_bumpmap -#define GL_ATI_envmap_bumpmap 1 - #define GL_BUMP_ROT_MATRIX_ATI 0x8775 #define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 #define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 @@ -4373,15 +4126,10 @@ extern glTexBumpParameterfvATIPROC glTexBumpParameterfvATI; extern glGetTexBumpParameterivATIPROC glGetTexBumpParameterivATI; extern glGetTexBumpParameterfvATIPROC glGetTexBumpParameterfvATI; -#endif /* GL_ATI_envmap_bumpmap */ - /*-------------------------------------------------------------------*/ /*------------ATI_FRAGMENT_SHADER------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_fragment_shader -#define GL_ATI_fragment_shader 1 - #define GL_FRAGMENT_SHADER_ATI 0x8920 #define GL_REG_0_ATI 0x8921 #define GL_REG_1_ATI 0x8922 @@ -4517,27 +4265,17 @@ extern glAlphaFragmentOp2ATIPROC glAlphaFragmentOp2ATI; extern glAlphaFragmentOp3ATIPROC glAlphaFragmentOp3ATI; extern glSetFragmentShaderConstantATIPROC glSetFragmentShaderConstantATI; -#endif /* GL_ATI_fragment_shader */ - /*-------------------------------------------------------------------*/ /*------------ATI_TEXTURE_MIRROR_ONCE--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_texture_mirror_once -#define GL_ATI_texture_mirror_once 1 - #define GL_MIRROR_CLAMP_ATI 0x8742 #define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 -#endif - /*-------------------------------------------------------------------*/ /*------------ATI_ELEMENT_ARRAY--------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_element_array -#define GL_ATI_element_array 1 - #define GL_ELEMENT_ARRAY_ATI 0x8768 #define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 #define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A @@ -4550,15 +4288,10 @@ extern glElementPointerATIPROC glElementPointerATI; extern glDrawElementArrayATIPROC glDrawElementArrayATI; extern glDrawRangeElementArrayATIPROC glDrawRangeElementArrayATI; -#endif /* GL_ATI_element_array */ - /*-------------------------------------------------------------------*/ /*------------ATI_VERTEX_STREAMS-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_vertex_streams -#define GL_ATI_vertex_streams 1 - #define GL_MAX_VERTEX_STREAMS_ATI 0x876B #define GL_VERTEX_SOURCE_ATI 0x876C #define GL_VERTEX_STREAM0_ATI 0x876D @@ -4647,15 +4380,10 @@ extern glNormalStream3fvATIPROC glNormalStream3fvATI; extern glNormalStream3dATIPROC glNormalStream3dATI; extern glNormalStream3dvATIPROC glNormalStream3dvATI; -#endif /* GL_ATI_vertex_streams */ - /*-------------------------------------------------------------------*/ /*------------ATI_VERTEX_ARRAY_OBJECT--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_vertex_array_object -#define GL_ATI_vertex_array_object 1 - #define GL_STATIC_ATI 0x8760 #define GL_DYNAMIC_ATI 0x8761 #define GL_PRESERVE_ATI 0x8762 @@ -4691,27 +4419,17 @@ extern glVariantArrayObjectATIPROC glVariantArrayObjectATI; extern glGetVariantArrayObjectfvATIPROC glGetVariantArrayObjectfvATI; extern glGetVariantArrayObjectivATIPROC glGetVariantArrayObjectivATI; -#endif /* GL_ATI_vertex_array_object */ - /*-------------------------------------------------------------------*/ /*------------HP_OCCLUSION_TEST--------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_HP_occlusion_test -#define GL_HP_occlusion_test 1 - #define GL_OCCLUSION_TEST_HP 0x8165; #define GL_OCCLUSION_TEST_RESULT_HP 0x8166; -#endif /* GL_HP_occlusion_test */ - /*-------------------------------------------------------------------*/ /*------------ATIX_POINT_SPRITES-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATIX_point_sprites -#define GL_ATIX_point_sprites 1 - #define GL_TEXTURE_POINT_MODE_ATIX 0x60b0 #define GL_TEXTURE_POINT_ONE_COORD_ATIX 0x60b1 #define GL_TEXTURE_POINT_SPRITE_ATIX 0x60b2 @@ -4719,43 +4437,26 @@ extern glGetVariantArrayObjectivATIPROC glGetVariantArrayObjectivATI; #define GL_POINT_SPRITE_CULL_CENTER_ATIX 0x60b4 #define GL_POINT_SPRITE_CULL_CLIP_ATIX 0x60b5 -#endif /* GL_ATIX_point_sprites */ - /*-------------------------------------------------------------------*/ /*------------ATIX_TEXTURE_ENV_ROUTE---------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATIX_texture_env_route -#define GL_ATIX_texture_env_route 1 - #define GL_SECONDARY_COLOR_ATIX 0x8747 #define GL_TEXTURE_OUTPUT_RGB_ATIX 0x8748 #define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749 -#endif /* GL_ATIX_texture_env_route */ - /*-------------------------------------------------------------------*/ /*------------NV_DEPTH_CLAMP-----------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_depth_clamp -#define GL_NV_depth_clamp 1 - #define GL_DEPTH_CLAMP_NV 0x864F -#endif /* GL_NV_depth_clamp */ - /*-------------------------------------------------------------------*/ /*------------NV_OCCLUSION_QUERY-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_occlusion_query -#define GL_NV_occlusion_query 1 - -#ifndef GL_HP_occlusion_test -#define GL_OCCLUSION_TEST_HP 0x8165 -#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 -#endif /* GL_HP_occlusion_test */ +/*#define GL_OCCLUSION_TEST_HP 0x8165 +#define GL_OCCLUSION_TEST_RESULT_HP 0x8166*/ #define GL_PIXEL_COUNTER_BITS_NV 0x8864 #define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 #define GL_PIXEL_COUNT_NV 0x8866 @@ -4777,15 +4478,10 @@ extern glEndOcclusionQueryNVPROC glEndOcclusionQueryNV; extern glGetOcclusionQueryivNVPROC glGetOcclusionQueryivNV; extern glGetOcclusionQueryuivNVPROC glGetOcclusionQueryuivNV; -#endif /* GL_NV_occlusion_query */ - /*-------------------------------------------------------------------*/ /*------------NV_POINT_SPRITE----------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_point_sprite -#define GL_NV_point_sprite 1 - #define GL_POINT_SPRITE_NV 0x8861 #define GL_COORD_REPLACE_NV 0x8862 #define GL_POINT_SPRITE_R_MODE_NV 0x8863 @@ -4796,15 +4492,10 @@ typedef void (APIENTRY * glPointParameterivNVPROC) (GLenum pname, const GLint *p extern glPointParameteriNVPROC glPointParameteriNV; extern glPointParameterivNVPROC glPointParameterivNV; -#endif /* GL_NV_point_sprite */ - /*-------------------------------------------------------------------*/ /*------------NV_TEXTURE_SHADER3-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_texture_shader3 -#define GL_NV_texture_shader3 1 - #define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 #define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 @@ -4823,74 +4514,45 @@ extern glPointParameterivNVPROC glPointParameterivNV; #define GL_SIGNED_HILO8_NV 0x885F #define GL_FORCE_BLUE_TO_ONE_NV 0x8860 -#endif /* GL_NV_texture_shader3 */ - /*-------------------------------------------------------------------*/ /*------------NV_VERTEX_PROGRAM1_1-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_vertex_program1_1 -#define GL_NV_vertex_program1_1 - -#endif /* GL_NV_vertex_program1_1 */ /*-------------------------------------------------------------------*/ /*------------ARB_TEXTURE_MIRRORED_REPEAT----------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_texture_mirrored_repeat -#define GL_ARB_texture_mirrored_repeat 1 - #define GL_GL_MIRRORED_REPEAT_ARB 0x8370 -#endif /* GL_ARB_texture_mirrored_repeat */ - /*-------------------------------------------------------------------*/ /*------------ARB_SHADOW---------------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_shadow -#define GL_ARB_shadow 1 - #define GL_TEXTURE_COMPARE_MODE_ARB 0x884C #define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D #define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E -#endif /* GL_ARB_shadow */ - /*-------------------------------------------------------------------*/ /*------------ARB_SHADOW_AMBIENT-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_shadow_ambient -#define GL_ARB_shadow_ambient 1 - #define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF -#endif /* GL_ARB_shadow_ambient */ - /*-------------------------------------------------------------------*/ /*------------ARB_DEPTH_TEXTURE--------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_depth_texture -#define GL_ARB_depth_texture 1 - #define GL_DEPTH_COMPONENT16_ARB 0x81A5 #define GL_DEPTH_COMPONENT24_ARB 0x81A6 #define GL_DEPTH_COMPONENT32_ARB 0x81A7 #define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A #define GL_DEPTH_TEXTURE_MODE_ARB 0x884B -#endif /* GL_ARB_depth_texture */ - /*-------------------------------------------------------------------*/ /*------------ARB_WINDOW_POS-----------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_window_pos -#define GL_ARB_window_pos 1 - typedef void (APIENTRY * glWindowPos2dARBPROC) (GLdouble x, GLdouble y); typedef void (APIENTRY * glWindowPos2fARBPROC) (GLfloat x, GLfloat y); typedef void (APIENTRY * glWindowPos2iARBPROC) (GLint x, GLint y); @@ -4925,26 +4587,16 @@ extern glWindowPos3fvARBPROC glWindowPos3fvARB; extern glWindowPos3ivARBPROC glWindowPos3ivARB; extern glWindowPos3svARBPROC glWindowPos3svARB; -#endif /* GL_ARB_window_pos */ - /*-------------------------------------------------------------------*/ /*------------EXT_SHADOW_FUNCS---------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_shadow_funcs -#define GL_EXT_shadow_funcs 1 - -#endif /* GL_EXT_shadow_funcs */ - /*-------------------------------------------------------------------*/ /*------------EXT_draw_range_elements--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_draw_range_elements -#define GL_EXT_draw_range_elements 1 - typedef void (APIENTRY * glDrawRangeElementsEXTPROC) ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); extern glDrawRangeElementsEXTPROC glDrawRangeElementsEXT; @@ -4952,29 +4604,19 @@ extern glDrawRangeElementsEXTPROC glDrawRangeElementsEXT; #define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 #define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 -#endif - /*-------------------------------------------------------------------*/ /*------------EXT_texture_compression_s3tc---------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_texture_compression_s3tc -#define GL_EXT_texture_compression_s3tc 1 - #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 -#endif /* GL_EXT_texture_compression_s3tc */ - /*-------------------------------------------------------------------*/ /*------------EXT_stencil_two_side-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_stencil_two_side -#define GL_EXT_stencil_two_side 1 - typedef void (APIENTRY * glActiveStencilFaceEXTPROC) (GLenum face); extern glActiveStencilFaceEXTPROC glActiveStencilFaceEXT; @@ -4982,15 +4624,10 @@ extern glActiveStencilFaceEXTPROC glActiveStencilFaceEXT; #define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 #define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 -#endif /* GL_EXT_stencil_two_side */ - /*-------------------------------------------------------------------*/ /*------------ARB_vertex_program-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_vertex_program -#define GL_ARB_vertex_program 1 - typedef void (APIENTRY * glVertexAttrib1sARBPROC) (GLuint index, GLshort x); typedef void (APIENTRY * glVertexAttrib1fARBPROC) (GLuint index, GLfloat x); typedef void (APIENTRY * glVertexAttrib1dARBPROC) (GLuint index, GLdouble x); @@ -5197,27 +4834,17 @@ extern glIsProgramARBPROC glIsProgramARB; #define GL_MATRIX30_ARB 0x88DE #define GL_MATRIX31_ARB 0x88DF -#endif /* GL_ARB_vertex_program */ - /*-------------------------------------------------------------------*/ /*------------GL_EXT_BGRA--------------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_bgra -#define GL_EXT_bgra 1 - #define GL_BGR_EXT 0x80E0 #define GL_BGRA_EXT 0x80E1 -#endif /* GL_EXT_bgra */ - /*-------------------------------------------------------------------*/ /*------------EXT_CULL_VERTEX----------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_cull_vertex -#define GL_EXT_cull_vertex 1 - #define GL_CULL_VERTEX_EXT 0x81AA #define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB #define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC @@ -5228,29 +4855,18 @@ typedef void (APIENTRY * glCullParameterdvEXTPROC) (GLenum pname, GLdouble *para extern glCullParameterfvEXTPROC glCullParameterfvEXT; extern glCullParameterdvEXTPROC glCullParameterdvEXT; - -#endif /* GL_EXT_cull_vertex */ - /*-------------------------------------------------------------------*/ /*------------GL_ATI_POINT_CULL_MODE---------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_point_cull_mode -#define GL_ATI_point_cull_mode 1 - #define GL_POINT_CULL_MODE_ATI 0x60b3 #define GL_POINT_CULL_CENTER_ATI 0x60b4 #define GL_POINT_CLIP_ATI 0x60b5 -#endif /* GL_ATI_point_cull_mode */ - /*-------------------------------------------------------------------*/ /*------------GL_BLEND_FUNC_SEPARATE---------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_blend_func_separate -#define GL_EXT_blend_func_separate 1 - #define GL_BLEND_DST_RGB_EXT 0x80C8 #define GL_BLEND_SRC_RGB_EXT 0x80C9 #define GL_BLEND_DST_ALPHA_EXT 0x80CA @@ -5260,28 +4876,18 @@ typedef void (APIENTRY * glBlendFuncSeparateEXTPROC) (GLenum sfactorRGB, GLenum extern glBlendFuncSeparateEXTPROC glBlendFuncSeparateEXT; -#endif /* GL_EXT_blend_func_separate */ - /*-------------------------------------------------------------------*/ /*------------GL_EXT_SEPARATE_SPECULAR_COLOR-------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_separate_specular_color -#define GL_EXT_separate_specular_color 1 - #define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 #define GL_SINGLE_COLOR_EXT 0x81F9 #define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA -#endif /* GL_EXT_separate_specular_color */ - /*-------------------------------------------------------------------*/ /*------------GL_NV_ELEMENT_ARRAY------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_element_array -#define GL_NV_element_array 1 - #define GL_ELEMENT_ARRAY_TYPE_NV 0x8769 #define GL_ELEMENT_ARRAY_POINTER_NV 0x876A @@ -5297,15 +4903,10 @@ extern glDrawRangeElementArrayNVPROC glDrawRangeElementArrayNV; extern glMultiDrawElementArrayNVPROC glMultiDrawElementArrayNV; extern glMultiDrawRangeElementArrayNVPROC glMultiDrawRangeElementArrayNV; -#endif /* GL_NV_element_array */ - /*-------------------------------------------------------------------*/ /*------------GL_NV_FLOAT_BUFFER-------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_float_buffer -#define GL_NV_float_buffer 1 - #define GL_FLOAT_R_NV 0x8880 #define GL_FLOAT_RG_NV 0x8881 #define GL_FLOAT_RGB_NV 0x8882 @@ -5335,15 +4936,10 @@ extern glMultiDrawRangeElementArrayNVPROC glMultiDrawRangeElementArrayNV; #define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 #endif /* _WIN32 */ -#endif /* GL_NV_float_buffer */ - /*-------------------------------------------------------------------*/ /*------------GL_NV_FRAGMENT_PROGRAM---------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_fragment_program -#define GL_NV_fragment_program 1 - #define GL_FRAGMENT_PROGRAM_NV 0x8870 #define GL_MAX_TEXTURE_COORDS_NV 0x8871 #define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 @@ -5358,14 +4954,12 @@ typedef void (APIENTRY * glProgramNamedParameter4dvNVPROC) (GLuint id, GLsizei l typedef void (APIENTRY * glGetProgramNamedParameterfvNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); typedef void (APIENTRY * glGetProgramNamedParameterdvNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); -#ifndef GL_ARB_vertex_program typedef void (APIENTRY * glProgramLocalParameter4dARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); typedef void (APIENTRY * glProgramLocalParameter4dvARBPROC) (GLenum target, GLuint index, const GLdouble *params); typedef void (APIENTRY * glProgramLocalParameter4fARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); typedef void (APIENTRY * glProgramLocalParameter4fvARBPROC) (GLenum target, GLuint index, const GLfloat *params); typedef void (APIENTRY * glGetProgramLocalParameterdvARBPROC) (GLenum target, GLuint index, GLdouble *params); typedef void (APIENTRY * glGetProgramLocalParameterfvARBPROC) (GLenum target, GLuint index, GLfloat *params); -#endif /* GL_ARB_vertex_program */ extern glProgramNamedParameter4fNVPROC glProgramNamedParameter4fNV; extern glProgramNamedParameter4dNVPROC glProgramNamedParameter4dNV; @@ -5374,24 +4968,17 @@ extern glProgramNamedParameter4dvNVPROC glProgramNamedParameter4dvNV; extern glGetProgramNamedParameterfvNVPROC glGetProgramNamedParameterfvNV; extern glGetProgramNamedParameterdvNVPROC glGetProgramNamedParameterdvNV; -#ifndef GL_ARB_vertex_program extern glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB; extern glProgramLocalParameter4dvARBPROC glProgramLocalParameter4dvARB; extern glProgramLocalParameter4fARBPROC glProgramLocalParameter4fARB; extern glProgramLocalParameter4fvARBPROC glProgramLocalParameter4fvARB; extern glGetProgramLocalParameterdvARBPROC glGetProgramLocalParameterdvARB; extern glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB; -#endif /* GL_ARB_vertex_program */ - -#endif /* GL_NV_fragment_program */ /*-------------------------------------------------------------------*/ /*------------GL_NV_PRIMITIVE_RESTART--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_primitive_restart -#define GL_NV_primitive_restart 1 - #define GL_PRIMITIVE_RESTART_NV 0x8558 #define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 @@ -5401,28 +4988,14 @@ typedef void (APIENTRY * glPrimitiveRestartIndexNVPROC) (GLuint index); extern glPrimitiveRestartNVPROC glPrimitiveRestartNV; extern glPrimitiveRestartIndexNVPROC glPrimitiveRestartIndexNV; -#endif /* GL_NV_primitive_restart */ - /*-------------------------------------------------------------------*/ /*------------GL_NV_VERTEX_PROGRAM2----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_NV_vertex_program2 -#define GL_NV_vertex_program2 1 - -#endif /* GL_NV_vertex_program2 */ - /*-------------------------------------------------------------------*/ /*------------GL_ARB_FRAGMENT_PROGRAM--------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ARB_fragment_program -#define GL_ARB_fragment_program - -#ifndef GL_ARB_vertex_program -#error ARB_vertex_program not defined -#endif - /* no new entry points, all of ARB_vertex_program reused */ #define GL_FRAGMENT_PROGRAM_ARB 0x8804 @@ -5441,15 +5014,10 @@ extern glPrimitiveRestartIndexNVPROC glPrimitiveRestartIndexNV; #define GL_MAX_TEXTURE_COORDS_ARB 0x8871 #define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 -#endif /* GL_ARB_fragment_program */ - /*-------------------------------------------------------------------*/ /*------------ATI_separate_stencil---------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_separate_stencil -#define GL_ATI_separate_stencil 1 - #define GL_STENCIL_BACK_FUNC_ATI 0x8800 #define GL_STENCIL_BACK_FAIL_ATI 0x8801 #define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 @@ -5461,26 +5029,16 @@ typedef void (APIENTRY * glStencilFuncSeparateATIPROC) (GLenum frontfunc, GLenum extern glStencilOpSeparateATIPROC glStencilOpSeparateATI; extern glStencilFuncSeparateATIPROC glStencilFuncSeparateATI; -#endif /* GL_ATI_separate_stencil */ - /*-------------------------------------------------------------------*/ /*------------GL_ATI_TEXT_FRAGMENT_SHADER----------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_ATI_text_fragment_shader -#define GL_ATI_text_fragment_shader 1 - #define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 -#endif /* GL_ATI_text_fragment_shader */ - /*-------------------------------------------------------------------*/ /*------------GL_EXT_textzre_env_combine-----------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef GL_EXT_texture_env_combine -#define GL_EXT_texture_env_combine 1 - #define GL_COMBINE_EXT 0x8570 #define GL_COMBINE_RGB_EXT 0x8571 #define GL_COMBINE_ALPHA_EXT 0x8572 @@ -5503,8 +5061,6 @@ extern glStencilFuncSeparateATIPROC glStencilFuncSeparateATI; #define GL_OPERAND1_ALPHA_EXT 0x8599 #define GL_OPERAND2_ALPHA_EXT 0x859A -#endif /* GL_EXT_texture_env_combine */ - /*-------------------------------------------------------------------*/ /*------------END GL EXTENSIONS--------------------------------------*/ /*-------------------------------------------------------------------*/ @@ -5519,23 +5075,14 @@ extern glStencilFuncSeparateATIPROC glStencilFuncSeparateATI; /*------------WGL_EXT_EXTENSION_STRING-------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_EXT_extensions_string -#define WGL_EXT_extensions_string 1 - typedef const char* (APIENTRY * wglGetExtensionsStringEXTPROC) (); extern wglGetExtensionsStringEXTPROC wglGetExtensionsStringEXT; -#endif /* WGL_EXT_extensions_string */ - /*-------------------------------------------------------------------*/ /*------------WGL_ARB_BUFFER_REGION----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_ARB_buffer_region -#define WGL_ARB_buffer_region 1 - - #define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 #define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002 #define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004 @@ -5551,28 +5098,18 @@ extern wglDeleteBufferRegionARBPROC wglDeleteBufferRegionARB; extern wglSaveBufferRegionARBPROC wglSaveBufferRegionARB; extern wglRestoreBufferRegionARBPROC wglRestoreBufferRegionARB; -#endif /* WGL_ARB_buffer_region */ - /*-------------------------------------------------------------------*/ /*------------WGL_ARB_EXTENSION_STRING-------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_ARB_extensions_string -#define WGL_ARB_extensions_string 1 - typedef const char* (APIENTRY * wglGetExtensionsStringARBPROC) (HDC hdc); extern wglGetExtensionsStringARBPROC wglGetExtensionsStringARB; -#endif /* WGL_ARB_extensions_string */ - /*-------------------------------------------------------------------*/ /*------------WGL_ARB_PBUFFER----------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_ARB_pbuffer -#define WGL_ARB_pbuffer 1 - #define WGL_DRAW_TO_PBUFFER_ARB 0x202D #define WGL_DRAW_TO_PBUFFER_ARB 0x202D #define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E @@ -5597,15 +5134,10 @@ extern wglReleasePbufferDCARBPROC wglReleasePbufferDCARB; extern wglDestroyPbufferARBPROC wglDestroyPbufferARB; extern wglQueryPbufferARBPROC wglQueryPbufferARB; -#endif /* WGL_ARB_pbuffer */ - /*-------------------------------------------------------------------*/ /*------------WGL_ARB_PIXEL_FORMAT-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_ARB_pixel_format -#define WGL_ARB_pixel_format 1 - #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 #define WGL_DRAW_TO_WINDOW_ARB 0x2001 #define WGL_DRAW_TO_BITMAP_ARB 0x2002 @@ -5664,15 +5196,10 @@ extern wglGetPixelFormatAttribivARBPROC wglGetPixelFormatAttribivARB; extern wglGetPixelFormatAttribfvARBPROC wglGetPixelFormatAttribfvARB; extern wglChoosePixelFormatARBPROC wglChoosePixelFormatARB; -#endif /* WGL_ARB_pixel_format */ - /*-------------------------------------------------------------------*/ /*------------WGL_ARB_RENDER_TEXTURE---------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_ARB_render_texture -#define WGL_ARB_render_texture 1 - #define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070 #define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071 #define WGL_TEXTURE_FORMAT_ARB 0x2072 @@ -5716,30 +5243,20 @@ extern wglBindTexImageARBPROC wglBindTexImageARB; extern wglReleaseTexImageARBPROC wglReleaseTexImageARB; extern wglSetPbufferAttribARBPROC wglSetPbufferAttribARB; -#endif /*WGL_ARB_render_texture */ - /*-------------------------------------------------------------------*/ /*------------WGL_EXT_SWAP_CONTROL-----------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_EXT_swap_control -#define WGL_EXT_swap_control 1 - typedef BOOL (APIENTRY * wglSwapIntervalEXTPROC) (int interval); typedef int (APIENTRY * wglGetSwapIntervalEXTPROC) (void); extern wglSwapIntervalEXTPROC wglSwapIntervalEXT; extern wglGetSwapIntervalEXTPROC wglGetSwapIntervalEXT; -#endif /* WGL_EXT_swap_control */ - /*-------------------------------------------------------------------*/ /*------------WGL_ARB_MAKE_CURRENT_READ------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_ARB_make_current_read -#define WGL_ARB_make_current_read 1 - #define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 #define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 @@ -5749,27 +5266,17 @@ typedef HDC (APIENTRY * wglGetCurrentReadDCARBPROC) (void); extern wglMakeContextCurrentARBPROC wglMakeContextCurrentARB; extern wglGetCurrentReadDCARBPROC wglGetCurrentReadDCARB; -#endif /* WGL_ARB_make_current_read */ - /*-------------------------------------------------------------------*/ /*------------WGL_ARB_MULTISAMPLE------------------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_ARB_multisample -#define WGL_ARB_multisample 1 - #define WGL_SAMPLE_BUFFERS_ARB 0x2041 #define WGL_SAMPLES_ARB 0x2042 -#endif /* WGL_ARB_multisample */ - /*-------------------------------------------------------------------*/ /*------------WGL_NV_RENDER_DEPTH_TEXTURE----------------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_NV_render_depth_texture -#define WGL_NV_render_depth_texture 1 - #define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3 #define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 #define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5 @@ -5777,21 +5284,14 @@ extern wglGetCurrentReadDCARBPROC wglGetCurrentReadDCARB; #define WGL_NO_TEXTURE_ARB 0x2077 #define WGL_DEPTH_COMPONENT_NV 0x20A7 -#endif /* WGL_NV_render_depth_texture */ - /*-------------------------------------------------------------------*/ /*------------WGL_NV_RENDER_TEXTURE_RECTANGLE-----------------------*/ /*-------------------------------------------------------------------*/ -#ifndef WGL_NV_render_texture_rectangle -#define WGL_NV_render_texture_rectangle 1 - #define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 #define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 #define WGL_TEXTURE_RECTANGLE_NV 0x20A2 -#endif /* WGL_NV_render_texture_rectangle */ - /*-------------------------------------------------------------------*/ /*------------END WGL EXTENSIONS-------------------------------------*/ /*-------------------------------------------------------------------*/ @@ -5800,166 +5300,134 @@ extern wglGetCurrentReadDCARBPROC wglGetCurrentReadDCARB; /* helper stuff */ -/* I use int here because C does not know bool */ - -#ifdef _WIN32 -struct WGLExtensionTypes -{ - int ARB_buffer_region; - int ARB_extensions_string; - int ARB_make_current_read; - int ARB_multisample; - int ARB_pbuffer; - int ARB_pixel_format; - int ARB_render_texture; - int EXT_extensions_string; - int EXT_swap_control; - int NV_render_depth_texture; - int NV_render_texture_rectangle; -}; -#endif /* WIN32 */ - -#ifdef _X11 -struct GLXExtensionTypes -{ - int GLX12; - int GLX13; - int EXT_visual_info; - int EXT_visual_rating; -}; -#endif /* X11 */ - -#ifdef _AGL -struct AGLExtensionTypes -{ -}; -#endif /* _AGL */ - -struct GLUExtensionTypes -{ - int GLU12; - int GLU13; - int EXT_nurbs_tessellator; - int EXT_object_space_tess; -}; - struct ExtensionTypes { #ifdef _WIN32 /* WGL extensions */ - struct WGLExtensionTypes wgl; + bool WGL_ARB_buffer_region; + bool WGL_ARB_extensions_string; + bool WGL_ARB_make_current_read; + bool WGL_ARB_multisample; + bool WGL_ARB_pbuffer; + bool WGL_ARB_pixel_format; + bool WGL_ARB_render_texture; + bool WGL_EXT_extensions_string; + bool WGL_EXT_swap_control; + bool WGL_NV_render_depth_texture; + bool WGL_NV_render_texture_rectangle; #endif /* WIN32 */ #ifdef _X11 - struct GLXExtensionTypes glx; + bool GLX12; + bool GLX13; + bool GLX_EXT_visual_info; + bool GLX_EXT_visual_rating; #endif /* X11 */ -#ifdef _AGL - struct AGLExtensionTypes agl; -#endif /* _AGL */ - struct GLUExtensionTypes glu; - int ARB_imaging; - int ARB_depth_texture; - int ARB_fragment_program; - int ARB_matrix_palette; - int ARB_multisample; - int ARB_multitexture; - int ARB_point_parameters; - int ARB_shadow; - int ARB_shadow_ambient; - int ARB_texture_border_clamp; - int ARB_texture_compression; - int ARB_texture_cube_map; - int ARB_texture_env_add; - int ARB_texture_env_dot3; - int ARB_texture_env_combine; - int ARB_texture_env_crossbar; - int ARB_texture_mirrored_repeat; - int ARB_transpose_matrix; - int ARB_vertex_blend; - int ARB_vertex_buffer_object; - int ARB_vertex_program; - int ARB_window_pos; - int EXT_abgr; - int EXT_bgra; - int EXT_blend_func_separate; - int EXT_compiled_vertex_array; - int EXT_cull_vertex; - int EXT_fog_coord; - int EXT_multi_draw_arrays; - int EXT_point_parameters; - int EXT_secondary_color; - int EXT_separate_specular_color; - int EXT_shadow_funcs; - int EXT_stencil_two_side; - int EXT_stencil_wrap; - int EXT_texture_compression_s3tc; - int EXT_texture_env_combine; - int EXT_texture_filter_anisotropic; - int EXT_texture_lod_bias; - int EXT_vertex_shader; - int EXT_vertex_weighting; - int EXT_draw_range_elements; - int ATI_element_array; - int ATI_envmap_bumpmap; - int ATI_fragment_shader; - int ATI_pn_triangles; - int ATI_point_cull_mode; - int ATI_separate_stencil; - int ATI_text_fragment_shader; - int ATI_texture_mirror_once; - int ATI_vertex_array_object; - int ATI_vertex_streams; - int ATIX_point_sprites; - int ATIX_texture_env_route; - int HP_occlusion_test; - int NV_blend_square; - int NV_copy_depth_to_color; - int NV_depth_clamp; - int NV_element_array; - int NV_evaluators; - int NV_fence; - int NV_float_buffer; - int NV_fog_distance; - int NV_fragment_program; - int NV_light_max_exponent; - int NV_occlusion_query; - int NV_packed_depth_stencil; - int NV_point_sprite; - int NV_primitive_restart; - int NV_register_combiners; - int NV_register_combiners2; - int NV_texgen_reflection; - int NV_texture_env_combine4; - int NV_texture_rectangle; - int NV_texture_shader; - int NV_texture_shader2; - int NV_texture_shader3; - int NV_vertex_array_range; - int NV_vertex_array_range2; - int NV_vertex_program; - int NV_vertex_program1_1; - int NV_vertex_program2; - int SGIS_generate_mipmap; - int SGIX_shadow; - int SGIX_depth_texture; - int OpenGL12; - int OpenGL13; - int OpenGL14; + bool OpenGL12; + bool OpenGL13; + bool OpenGL14; + bool GLU12; + bool GLU13; + bool GLU_EXT_nurbs_tessellator; + bool GLU_EXT_object_space_tess; + + bool GL_ARB_imaging; + bool GL_ARB_depth_texture; + bool GL_ARB_fragment_program; + bool GL_ARB_matrix_palette; + bool GL_ARB_multisample; + bool GL_ARB_multitexture; + bool GL_ARB_point_parameters; + bool GL_ARB_shadow; + bool GL_ARB_shadow_ambient; + bool GL_ARB_texture_border_clamp; + bool GL_ARB_texture_compression; + bool GL_ARB_texture_cube_map; + bool GL_ARB_texture_env_add; + bool GL_ARB_texture_env_dot3; + bool GL_ARB_texture_env_combine; + bool GL_ARB_texture_env_crossbar; + bool GL_ARB_texture_mirrored_repeat; + bool GL_ARB_transpose_matrix; + bool GL_ARB_vertex_blend; + bool GL_ARB_vertex_buffer_object; + bool GL_ARB_vertex_program; + bool GL_ARB_window_pos; + bool GL_EXT_abgr; + bool GL_EXT_bgra; + bool GL_EXT_blend_func_separate; + bool GL_EXT_compiled_vertex_array; + bool GL_EXT_cull_vertex; + bool GL_EXT_fog_coord; + bool GL_EXT_multi_draw_arrays; + bool GL_EXT_point_parameters; + bool GL_EXT_secondary_color; + bool GL_EXT_separate_specular_color; + bool GL_EXT_shadow_funcs; + bool GL_EXT_stencil_two_side; + bool GL_EXT_stencil_wrap; + bool GL_EXT_texture_compression_s3tc; + bool GL_EXT_texture_env_combine; + bool GL_EXT_texture_filter_anisotropic; + bool GL_EXT_texture_lod_bias; + bool GL_EXT_vertex_shader; + bool GL_EXT_vertex_weighting; + bool GL_EXT_draw_range_elements; + bool GL_ATI_element_array; + bool GL_ATI_envmap_bumpmap; + bool GL_ATI_fragment_shader; + bool GL_ATI_pn_triangles; + bool GL_ATI_point_cull_mode; + bool GL_ATI_separate_stencil; + bool GL_ATI_text_fragment_shader; + bool GL_ATI_texture_mirror_once; + bool GL_ATI_vertex_array_object; + bool GL_ATI_vertex_streams; + bool GL_ATIX_point_sprites; + bool GL_ATIX_texture_env_route; + bool GL_HP_occlusion_test; + bool GL_NV_blend_square; + bool GL_NV_copy_depth_to_color; + bool GL_NV_depth_clamp; + bool GL_NV_element_array; + bool GL_NV_evaluators; + bool GL_NV_fence; + bool GL_NV_float_buffer; + bool GL_NV_fog_distance; + bool GL_NV_fragment_program; + bool GL_NV_light_max_exponent; + bool GL_NV_occlusion_query; + bool GL_NV_packed_depth_stencil; + bool GL_NV_point_sprite; + bool GL_NV_primitive_restart; + bool GL_NV_register_combiners; + bool GL_NV_register_combiners2; + bool GL_NV_texgen_reflection; + bool GL_NV_texture_env_combine4; + bool GL_NV_texture_rectangle; + bool GL_NV_texture_shader; + bool GL_NV_texture_shader2; + bool GL_NV_texture_shader3; + bool GL_NV_vertex_array_range; + bool GL_NV_vertex_array_range2; + bool GL_NV_vertex_program; + bool GL_NV_vertex_program1_1; + bool GL_NV_vertex_program2; + bool GL_SGIS_generate_mipmap; + bool GL_SGIX_shadow; + bool GL_SGIX_depth_texture; }; extern struct ExtensionTypes extgl_Extensions; - /* initializes everything, call this right after the rc is created. the function returns 0 if successful */ -int extgl_Initialize(); -int extgl_Open(void); +bool extgl_Initialize(JNIEnv *env, jobject gl_extensions); +bool extgl_Open(void); #ifdef _X11 -int extgl_InitGLX(Display *disp, int screen); +bool extgl_InitGLX(JNIEnv *env, jobject ext_set, Display *disp, int screen); #endif void extgl_Close(void); -int glInitialize(); /* deprecated, please do not use */ - #ifdef __cplusplus } #endif diff --git a/src/native/common/org_lwjgl_opengl_GLCaps.h b/src/native/common/org_lwjgl_opengl_GLCaps.h deleted file mode 100644 index fce81d20..00000000 --- a/src/native/common/org_lwjgl_opengl_GLCaps.h +++ /dev/null @@ -1,128 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class org_lwjgl_opengl_GLCaps */ - -#ifndef _Included_org_lwjgl_opengl_GLCaps -#define _Included_org_lwjgl_opengl_GLCaps -#ifdef __cplusplus -extern "C" { -#endif -/* Inaccessible static: GL_ARB_imaging */ -/* Inaccessible static: GL_ARB_depth_texture */ -/* Inaccessible static: GL_ARB_matrix_palette */ -/* Inaccessible static: GL_ARB_multisample */ -/* Inaccessible static: GL_ARB_multitexture */ -/* Inaccessible static: GL_ARB_point_parameters */ -/* Inaccessible static: GL_ARB_shadow */ -/* Inaccessible static: GL_ARB_shadow_ambient */ -/* Inaccessible static: GL_ARB_texture_compression */ -/* Inaccessible static: GL_ARB_texture_env_add */ -/* Inaccessible static: GL_ARB_texture_env_dot3 */ -/* Inaccessible static: GL_ARB_texture_env_combine */ -/* Inaccessible static: GL_ARB_texture_env_crossbar */ -/* Inaccessible static: GL_ARB_texture_border_clamp */ -/* Inaccessible static: GL_ARB_texture_cube_map */ -/* Inaccessible static: GL_ARB_texture_mirrored_repeat */ -/* Inaccessible static: GL_ARB_transpose_matrix */ -/* Inaccessible static: GL_ARB_vertex_blend */ -/* Inaccessible static: GL_ARB_vertex_program */ -/* Inaccessible static: GL_ARB_vertex_buffer_object */ -/* Inaccessible static: GL_ARB_window_pos */ -/* Inaccessible static: GL_EXT_abgr */ -/* Inaccessible static: GL_EXT_bgra */ -/* Inaccessible static: GL_EXT_blend_color */ -/* Inaccessible static: GL_EXT_blend_function_separate */ -/* Inaccessible static: GL_EXT_blend_minmax */ -/* Inaccessible static: GL_EXT_blend_subtract */ -/* Inaccessible static: GL_EXT_compiled_vertex_array */ -/* Inaccessible static: GL_EXT_cull_vertex */ -/* Inaccessible static: GL_EXT_draw_range_elements */ -/* Inaccessible static: GL_EXT_fog_coord */ -/* Inaccessible static: GL_EXT_light_max_exponent */ -/* Inaccessible static: GL_EXT_multi_draw_arrays */ -/* Inaccessible static: GL_EXT_packed_pixels */ -/* Inaccessible static: GL_EXT_paletted_texture */ -/* Inaccessible static: GL_EXT_point_parameters */ -/* Inaccessible static: GL_EXT_rescale_normal */ -/* Inaccessible static: GL_EXT_secondary_color */ -/* Inaccessible static: GL_EXT_separate_specular_color */ -/* Inaccessible static: GL_EXT_shadow_funcs */ -/* Inaccessible static: GL_EXT_shared_texture_palette */ -/* Inaccessible static: GL_EXT_stencil_two_side */ -/* Inaccessible static: GL_EXT_stencil_wrap */ -/* Inaccessible static: GL_EXT_texture_compression_s3tc */ -/* Inaccessible static: GL_EXT_texture_env_combine */ -/* Inaccessible static: GL_EXT_texture_env_dot3 */ -/* Inaccessible static: GL_EXT_texture_filter_anisotropic */ -/* Inaccessible static: GL_EXT_texture_lod_bias */ -/* Inaccessible static: GL_EXT_vertex_array */ -/* Inaccessible static: GL_EXT_vertex_shader */ -/* Inaccessible static: GL_EXT_vertex_weighting */ -/* Inaccessible static: GL_ATI_element_array */ -/* Inaccessible static: GL_ATI_envmap_bumpmap */ -/* Inaccessible static: GL_ATI_fragment_shader */ -/* Inaccessible static: GL_ATI_pn_triangles */ -/* Inaccessible static: GL_ATI_texture_mirror_once */ -/* Inaccessible static: GL_ATI_vertex_array_object */ -/* Inaccessible static: GL_ATI_vertex_streams */ -/* Inaccessible static: GL_ATIX_point_sprites */ -/* Inaccessible static: GL_ATIX_texture_env_route */ -/* Inaccessible static: GL_HP_occlusion_test */ -/* Inaccessible static: GL_NV_blend_square */ -/* Inaccessible static: GL_NV_copy_depth_to_color */ -/* Inaccessible static: GL_NV_depth_clamp */ -/* Inaccessible static: GL_NV_evaluators */ -/* Inaccessible static: GL_NV_fence */ -/* Inaccessible static: GL_NV_fog_distance */ -/* Inaccessible static: GL_NV_light_max_exponent */ -/* Inaccessible static: GL_NV_occlusion_query */ -/* Inaccessible static: GL_NV_packed_depth_stencil */ -/* Inaccessible static: GL_NV_point_sprite */ -/* Inaccessible static: GL_NV_register_combiners */ -/* Inaccessible static: GL_NV_register_combiners2 */ -/* Inaccessible static: GL_NV_texgen_reflection */ -/* Inaccessible static: GL_NV_texture_env_combine4 */ -/* Inaccessible static: GL_NV_texture_rectangle */ -/* Inaccessible static: GL_NV_texture_shader */ -/* Inaccessible static: GL_NV_texture_shader2 */ -/* Inaccessible static: GL_NV_texture_shader3 */ -/* Inaccessible static: GL_NV_vertex_array_range */ -/* Inaccessible static: GL_NV_vertex_array_range2 */ -/* Inaccessible static: GL_NV_vertex_program */ -/* Inaccessible static: GL_NV_vertex_program1_1 */ -/* Inaccessible static: GL_SGIS_generate_mipmap */ -/* Inaccessible static: GL_SGIX_shadow */ -/* Inaccessible static: GL_SGIX_depth_texture */ -/* Inaccessible static: OpenGL10 */ -/* Inaccessible static: OpenGL11 */ -/* Inaccessible static: OpenGL12 */ -/* Inaccessible static: OpenGL13 */ -/* Inaccessible static: OpenGL14 */ -/* Inaccessible static: WGL_ARB_buffer_region */ -/* Inaccessible static: WGL_ARB_extensions_string */ -/* Inaccessible static: WGL_ARB_pbuffer */ -/* Inaccessible static: WGL_ARB_pixel_format */ -/* Inaccessible static: WGL_ARB_render_texture */ -/* Inaccessible static: WGL_EXT_extensions_string */ -/* Inaccessible static: WGL_EXT_swap_control */ -/* Inaccessible static: class_00024org_00024lwjgl_00024opengl_00024GLCaps */ -/* - * Class: org_lwjgl_opengl_GLCaps - * Method: isWGLEXTExtensionsStringAvailable - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_GLCaps_isWGLEXTExtensionsStringAvailable - (JNIEnv *, jclass); - -/* - * Class: org_lwjgl_opengl_GLCaps - * Method: isWGLARBExtensionsStringAvailable - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_GLCaps_isWGLARBExtensionsStringAvailable - (JNIEnv *, jclass); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/native/common/org_lwjgl_opengl_Window.h b/src/native/common/org_lwjgl_opengl_Window.h index d19c69e5..45266b9b 100644 --- a/src/native/common/org_lwjgl_opengl_Window.h +++ b/src/native/common/org_lwjgl_opengl_Window.h @@ -88,10 +88,10 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_swapBuffers /* * Class: org_lwjgl_opengl_Window * Method: nCreate - * Signature: (Ljava/lang/String;IIIIZIIII)V + * Signature: (Ljava/lang/String;IIIIZIIIILjava/util/Vector;)V */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate - (JNIEnv *, jclass, jstring, jint, jint, jint, jint, jboolean, jint, jint, jint, jint); + (JNIEnv *, jclass, jstring, jint, jint, jint, jint, jboolean, jint, jint, jint, jint, jobject); /* * Class: org_lwjgl_opengl_Window diff --git a/src/native/linux/Makefile.am b/src/native/linux/Makefile.am index 8488d792..1ea2b504 100644 --- a/src/native/linux/Makefile.am +++ b/src/native/linux/Makefile.am @@ -11,7 +11,6 @@ NATIVE = \ org_lwjgl_input_Mouse.cpp \ org_lwjgl_input_Cursor.cpp \ org_lwjgl_opengl_Window.cpp \ - org_lwjgl_opengl_GLCaps.cpp \ org_lwjgl_opengl_Pbuffer.cpp \ extxcursor.cpp diff --git a/src/native/linux/org_lwjgl_opengl_GLCaps.cpp b/src/native/linux/org_lwjgl_opengl_GLCaps.cpp deleted file mode 100644 index af4bd5cb..00000000 --- a/src/native/linux/org_lwjgl_opengl_GLCaps.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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. - */ - -/** - * $Id$ - * - * @author elias_naur - * @version $Revision$ - */ - -#include "org_lwjgl_opengl_GLCaps.h" -#include "extgl.h" -#include "jni.h" - -/* - * Class: org_lwjgl_opengl_GLCaps - * Method: isWGLEXTExtensionsStringAvaiable - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_GLCaps_isWGLEXTExtensionsStringAvailable - (JNIEnv *env, jclass clazz) { - return JNI_FALSE; -} - -/* - * Class: org_lwjgl_opengl_GLCaps - * Method: isWGLARBExtensionsStringAvaiable - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_GLCaps_isWGLARBExtensionsStringAvailable - (JNIEnv *env, jclass clazz) { - return JNI_FALSE; -} diff --git a/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp b/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp index c102510f..f1276e7f 100644 --- a/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp +++ b/src/native/linux/org_lwjgl_opengl_Pbuffer.cpp @@ -29,7 +29,7 @@ JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_Pbuffer_getPbufferCaps (JNIEnv *env, jclass clazz) { // Only support thw GLX 1.3 Pbuffers and ignore the GLX_SGIX_pbuffer extension - return extgl_Extensions.glx.GLX13 ? org_lwjgl_opengl_Pbuffer_PBUFFER_SUPPORTED : 0; + return extgl_Extensions.GLX13 ? org_lwjgl_opengl_Pbuffer_PBUFFER_SUPPORTED : 0; } /* diff --git a/src/native/linux/org_lwjgl_opengl_Window.cpp b/src/native/linux/org_lwjgl_opengl_Window.cpp index 824e649d..1df38e1d 100644 --- a/src/native/linux/org_lwjgl_opengl_Window.cpp +++ b/src/native/linux/org_lwjgl_opengl_Window.cpp @@ -51,7 +51,7 @@ #include "Window.h" #include "org_lwjgl_opengl_Window.h" -#define USEGLX13 true +#define USEGLX13 extgl_Extensions.GLX13 static GLXContext context = NULL; // OpenGL rendering context static GLXWindow glx_window; @@ -286,14 +286,14 @@ void throwRuntimeException(JNIEnv * env, const char * err) } void makeCurrent(void) { - if (USEGLX13 && extgl_Extensions.glx.GLX13) + if (USEGLX13) glXMakeContextCurrent(getCurrentDisplay(), glx_window, glx_window, context); else glXMakeCurrent(getCurrentDisplay(), getCurrentWindow(), context); } static void releaseContext(void) { - if (USEGLX13 && extgl_Extensions.glx.GLX13) + if (USEGLX13) glXMakeContextCurrent(getCurrentDisplay(), None, None, NULL); else glXMakeCurrent(getCurrentDisplay(), None, NULL); @@ -367,7 +367,7 @@ static void dumpVisualInfo(Display *disp, XVisualInfo *vis_info) { static void destroy(void) { releaseContext(); - if (USEGLX13 && extgl_Extensions.glx.GLX13) + if (USEGLX13) glXDestroyWindow(getCurrentDisplay(), glx_window); glXDestroyContext(getCurrentDisplay(), context); context = NULL; @@ -446,7 +446,7 @@ static bool initWindowGLX(JNIEnv *env, Display *disp, int screen, jstring title, * Signature: (IIII)Z */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate - (JNIEnv * env, jclass clazz, jstring title, jint x, jint y, jint width, jint height, jboolean fullscreen, jint bpp, jint alpha, jint depth, jint stencil) + (JNIEnv * env, jclass clazz, jstring title, jint x, jint y, jint width, jint height, jboolean fullscreen, jint bpp, jint alpha, jint depth, jint stencil, jobject ext_set) { int screen; Display *disp; @@ -454,7 +454,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate if (fullscreen == JNI_TRUE) fscreen = true; - if (extgl_Open() != 0) { + if (!extgl_Open()) { throwException(env, "Could not load gl libs"); return; } @@ -464,14 +464,14 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate return; } screen = XDefaultScreen(disp); - if (extgl_InitGLX(disp, screen) != 0) { + if (!extgl_InitGLX(env, ext_set, disp, screen)) { XCloseDisplay(disp); extgl_Close(); throwException(env, "Could not init GLX"); return; } bool create_success; - if (USEGLX13 && extgl_Extensions.glx.GLX13) { + if (USEGLX13) { create_success = initWindowGLX13(env, disp, screen, title, x, y, width, height, bpp, depth, alpha, stencil, fscreen); } else { create_success = initWindowGLX(env, disp, screen, title, x, y, width, height, bpp, depth, alpha, stencil, fscreen); @@ -481,7 +481,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate extgl_Close(); return; } - if (extgl_Initialize() != 0) { + if (!extgl_Initialize(env, ext_set)) { destroy(); throwException(env, "Could not init gl function pointers"); return; @@ -511,7 +511,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nDestroy JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_swapBuffers(JNIEnv * env, jclass clazz) { dirty = false; - if (USEGLX13 && extgl_Extensions.glx.GLX13) + if (USEGLX13) glXSwapBuffers(getCurrentDisplay(), glx_window); else glXSwapBuffers(getCurrentDisplay(), getCurrentWindow()); diff --git a/src/native/macosx/Makefile.am b/src/native/macosx/Makefile.am index af7ee035..425a7ab8 100644 --- a/src/native/macosx/Makefile.am +++ b/src/native/macosx/Makefile.am @@ -11,6 +11,5 @@ NATIVE = \ # org_lwjgl_input_Mouse.cpp \ # org_lwjgl_input_Cursor.cpp \ org_lwjgl_opengl_Window.cpp -# org_lwjgl_opengl_GLCaps.cpp \ # org_lwjgl_opengl_Pbuffer.cpp diff --git a/src/native/macosx/org_lwjgl_opengl_Window.cpp b/src/native/macosx/org_lwjgl_opengl_Window.cpp index ae6cc2c4..31dce19c 100644 --- a/src/native/macosx/org_lwjgl_opengl_Window.cpp +++ b/src/native/macosx/org_lwjgl_opengl_Window.cpp @@ -129,7 +129,7 @@ OSErr aehandler(const AppleEvent * theAppleEvent, AppleEvent * reply, SInt32 han return noErr; } -JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate(JNIEnv *env, jclass clazz, jstring title, jint x, jint y, jint width, jint height, jboolean fullscreen, jint bpp, jint alpha, jint depth, jint stencil) { +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate(JNIEnv *env, jclass clazz, jstring title, jint x, jint y, jint width, jint height, jboolean fullscreen, jint bpp, jint alpha, jint depth, jint stencil, jobject ext_set) { Rect rect; OSStatus status; const WindowAttributes window_attr = kWindowCloseBoxAttribute| diff --git a/src/native/win32/org_lwjgl_opengl_GLCaps.cpp b/src/native/win32/org_lwjgl_opengl_GLCaps.cpp deleted file mode 100644 index fbd3353b..00000000 --- a/src/native/win32/org_lwjgl_opengl_GLCaps.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2002 Light Weight Java Game Library 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 'Light Weight Java Game Library' 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. - */ - -/** - * $Id$ - * - * @author elias_naur - * @version $Revision$ - */ - -#include -#include "org_lwjgl_opengl_GLCaps.h" -#include "extgl.h" -#include "jni.h" - -/* - * Class: org_lwjgl_opengl_GLCaps - * Method: isWGLEXTExtensionsStringAvaiable - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_GLCaps_isWGLEXTExtensionsStringAvailable - (JNIEnv *env, jclass clazz) { - return extgl_Extensions.wgl.EXT_extensions_string; -} - -/* - * Class: org_lwjgl_opengl_GLCaps - * Method: isWGLARBExtensionsStringAvaiable - * Signature: ()Z - */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_GLCaps_isWGLARBExtensionsStringAvailable - (JNIEnv *env, jclass clazz) { - return extgl_Extensions.wgl.ARB_extensions_string; -} diff --git a/src/native/win32/org_lwjgl_opengl_Pbuffer.cpp b/src/native/win32/org_lwjgl_opengl_Pbuffer.cpp index f9b3dbe6..e36ed1ef 100755 --- a/src/native/win32/org_lwjgl_opengl_Pbuffer.cpp +++ b/src/native/win32/org_lwjgl_opengl_Pbuffer.cpp @@ -17,7 +17,7 @@ typedef struct _PbufferInfo { JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_Pbuffer_getPbufferCaps (JNIEnv *env, jclass clazz) { - return extgl_Extensions.wgl.ARB_pbuffer ? org_lwjgl_opengl_Pbuffer_PBUFFER_SUPPORTED : 0; + return extgl_Extensions.WGL_ARB_pbuffer ? org_lwjgl_opengl_Pbuffer_PBUFFER_SUPPORTED : 0; } /* diff --git a/src/native/win32/org_lwjgl_opengl_Window.cpp b/src/native/win32/org_lwjgl_opengl_Window.cpp index 5cec7dad..7530030a 100755 --- a/src/native/win32/org_lwjgl_opengl_Window.cpp +++ b/src/native/win32/org_lwjgl_opengl_Window.cpp @@ -166,7 +166,7 @@ static int findPixelFormat(JNIEnv *env, unsigned int flags, int bpp, int alpha, } // 4. Initialise other things now - if (extgl_Open() != 0) { + if (!extgl_Open()) { throwException(env, "Failed to open extgl"); return -1; } @@ -538,7 +538,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_swapBuffers * Signature: (Ljava/lang/String;IIIIZIIII)V */ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate - (JNIEnv * env, jclass clazz, jstring title, jint x, jint y, jint width, jint height, jboolean fullscreen, jint bpp, jint alpha, jint depth, jint stencil) + (JNIEnv * env, jclass clazz, jstring title, jint x, jint y, jint width, jint height, jboolean fullscreen, jint bpp, jint alpha, jint depth, jint stencil, jobject ext_set) { closerequested = false; minimized = false; @@ -577,7 +577,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Window_nCreate wglMakeCurrent(hdc, hglrc); // Initialise GL extensions - if (extgl_Initialize() != 0) { + if (!extgl_Initialize(env, ext_set)) { closeWindow(); throwException(env, "Failed to initialize GL extensions"); return;