diff options
Diffstat (limited to 'make')
-rw-r--r-- | make/Makefile2 | 19 | ||||
-rw-r--r-- | make/gl-common.cfg | 16 | ||||
-rw-r--r-- | make/gl-glx-common.cfg | 64 | ||||
-rw-r--r-- | make/gl-glx-macosx.cfg | 10 | ||||
-rw-r--r-- | make/gl-glx-x11.cfg | 8 | ||||
-rw-r--r-- | make/gl-impl-macosx.cfg | 2 | ||||
-rw-r--r-- | make/gl-impl-win32.cfg | 2 | ||||
-rw-r--r-- | make/gl-impl-x11.cfg | 2 | ||||
-rw-r--r-- | make/glu-impl-common-CustomJavaCode.java | 13 | ||||
-rw-r--r-- | make/glu-impl-common.cfg | 5 | ||||
-rw-r--r-- | make/glu-impl-macosx.cfg | 2 | ||||
-rw-r--r-- | make/glu-impl-x11.cfg | 4 | ||||
-rw-r--r-- | make/glx-x11.cfg | 86 | ||||
-rw-r--r-- | make/stub_includes/opengl/GL/glu.h | 61 | ||||
-rw-r--r-- | make/stub_includes/win32/windows.h | 1 | ||||
-rw-r--r-- | make/stub_includes/win32/wingdi.h | 3 | ||||
-rw-r--r-- | make/stub_includes/x11/X11/X.h | 1 | ||||
-rw-r--r-- | make/stub_includes/x11/X11/Xutil.h | 5 | ||||
-rw-r--r-- | make/stub_includes/x11/window-system.c | 138 | ||||
-rw-r--r-- | make/wingdi-win32.cfg | 2 |
20 files changed, 275 insertions, 169 deletions
diff --git a/make/Makefile2 b/make/Makefile2 index cf9b6f655..91b9d6641 100644 --- a/make/Makefile2 +++ b/make/Makefile2 @@ -156,6 +156,7 @@ GG_JAVAFILES = \ $(GLUEGEN_DIR)/StructLayout.java \ $(GLUEGEN_DIR)/TypeInfo.java \ $(GLUEGEN_DIR)/runtime/BufferFactory.java \ + $(GLUEGEN_DIR)/runtime/ProcAddressHelper.java \ $(GLUEGEN_DIR)/runtime/StructAccessor.java \ $(GLUEGEN_DIR)/opengl/ConvertFromGL4Java.java \ $(GLUEGEN_DIR)/opengl/CGLPAWrapperEmitter.java \ @@ -394,6 +395,7 @@ JOGL_JAVAFILES_WINDOWS = \ JOGL_GENERATED_JAVAFILES_WINDOWS = \ $(GENSRC_JOGL_IMPL_DIR)/windows/BITMAPINFO.java \ $(GENSRC_JOGL_IMPL_DIR)/windows/BITMAPINFOHEADER.java \ + $(GENSRC_JOGL_IMPL_DIR)/windows/GLProcAddressTable.java \ $(GENSRC_JOGL_IMPL_DIR)/windows/JAWT_Win32DrawingSurfaceInfo.java \ $(GENSRC_JOGL_IMPL_DIR)/windows/PIXELFORMATDESCRIPTOR.java \ $(GENSRC_JOGL_IMPL_DIR)/windows/RGBQUAD.java \ @@ -408,12 +410,17 @@ JOGL_JAVAFILES_X11 = \ $(JOGL_IMPL_DIR)/x11/X11GLContext.java \ $(JOGL_IMPL_DIR)/x11/X11GLContextFactory.java \ $(JOGL_IMPL_DIR)/x11/X11OnscreenGLContext.java \ - $(JOGL_IMPL_DIR)/x11/X11OffscreenGLContext.java + $(JOGL_IMPL_DIR)/x11/X11OffscreenGLContext.java \ + $(JOGL_IMPL_DIR)/x11/X11PbufferGLContext.java JOGL_GENERATED_JAVAFILES_X11 = \ + $(GENSRC_JOGL_IMPL_DIR)/x11/GLProcAddressTable.java \ $(GENSRC_JOGL_IMPL_DIR)/x11/GLX.java \ + $(GENSRC_JOGL_IMPL_DIR)/x11/GLXFBConfig.java \ + $(GENSRC_JOGL_IMPL_DIR)/x11/GLXProcAddressTable.java \ $(GENSRC_JOGL_IMPL_DIR)/x11/JAWT_X11DrawingSurfaceInfo.java \ - $(GENSRC_JOGL_IMPL_DIR)/x11/X11GLImpl.java + $(GENSRC_JOGL_IMPL_DIR)/x11/X11GLImpl.java \ + $(GENSRC_JOGL_IMPL_DIR)/x11/XVisualInfo.java JOGL_GENERATED_CFILES_X11 = \ $(GENSRC_GL_NATIVE_DIR)/GLX_JNI.c \ @@ -429,6 +436,7 @@ JOGL_JAVAFILES_MACOSX = \ JOGL_GENERATED_JAVAFILES_MACOSX = \ $(GENSRC_JOGL_IMPL_DIR)/macosx/CGL.java \ + $(GENSRC_JOGL_IMPL_DIR)/macosx/GLProcAddressTable.java \ $(GENSRC_JOGL_IMPL_DIR)/macosx/JAWT_MacOSXDrawingSurfaceInfo.java \ $(GENSRC_JOGL_IMPL_DIR)/macosx/MacOSXGLImpl.java @@ -478,7 +486,7 @@ JOGL_GENERATED_CFILES_PD=$(JOGL_GENERATED_CFILES_WINDOWS) GL_DEFINES=/D "JOGL_EXPORTS" $(DEFINES) GL_INCLUDES=/I"$(JOGL_STUB_INCLUDES_DIR_OPENGL)" $(INCLUDES) GL_C_BUILD_OBJ_CMD=$(CC) /c $< $(CFLAGS) $(GL_INCLUDES) $(GL_DEFINES) /Fo"$@" -JOGL_DSO_LINK_ADDITIONAL_LIBS=opengl32.lib glu32.lib jawt.lib gdi32.lib +JOGL_DSO_LINK_ADDITIONAL_LIBS=opengl32.lib glu32.lib jawt.lib gdi32.lib kernel32.lib GL_LINKFLAGS=$(LINKFLAGS) $(JOGL_DSO_LINK_ADDITIONAL_LIBS) GL_C_LINK_DSO_CMD=$(LINK) /OUT:"$@" $(GL_LINKFLAGS) endif # WIN32 @@ -551,16 +559,15 @@ JOGL_GENERATED_JAVAFILES = \ $(GENSRC_JOGL_DIR)/WGL.java \ $(GENSRC_JOGL_DIR)/GLX.java \ $(GENSRC_JOGL_DIR)/CGL.java \ - $(GENSRC_JOGL_DIR)/XVisualInfo.java \ $(GENSRC_JOGL_GLU_DIR)/GLU.java \ $(GENSRC_JOGL_GLU_DIR)/GLUquadric.java \ $(GENSRC_JOGL_GLU_IMPL_DIR)/GLUImpl.java \ + $(GENSRC_JOGL_GLU_IMPL_DIR)/GLUProcAddressTable.java \ $(GENSRC_JOGL_IMPL_DIR)/JAWT.java \ $(GENSRC_JOGL_IMPL_DIR)/JAWTFactory.java \ $(GENSRC_JOGL_IMPL_DIR)/JAWT_DrawingSurface.java \ $(GENSRC_JOGL_IMPL_DIR)/JAWT_DrawingSurfaceInfo.java \ $(GENSRC_JOGL_IMPL_DIR)/JAWT_Rectangle.java \ - $(GENSRC_JOGL_IMPL_DIR)/ProcAddressTable.java \ $(GENSRC_JOGL_IMPL_DIR)/StaticGLInfo.java \ $(JOGL_GENERATED_JAVAFILES_PD) @@ -878,7 +885,7 @@ $(JOGL_GENERATED_JAVAFILES) $(JOGL_GENERATED_CFILES) : $(JOGL_STUB_INCLUDES_PD) $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.JavaEmitter -C$(JOGL_JAWT_CFG) $(JOGL_GLUEGEN_INCLUDES) -I"$(JAVA_INCLUDE_PATH)" "$(JAVA_INCLUDE_PATH_PD)/jawt_md.h" # generate WGL/GLX/CGL implementation class - $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.JavaEmitter -C$(JOGL_WINDOW_SYSTEM_CFG) $(JOGL_GLUEGEN_INCLUDES) -I$(JOGL_STUB_INCLUDES_DIR_OPENGL) $(JOGL_STUB_INCLUDES_DIR_PD)/window-system.c + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.opengl.GLEmitter -C$(JOGL_WINDOW_SYSTEM_CFG) $(JOGL_GLUEGEN_INCLUDES) -I$(JOGL_STUB_INCLUDES_DIR_OPENGL) $(JOGL_STUB_INCLUDES_DIR_PD)/window-system.c # generate StaticGLInfo class $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.opengl.BuildStaticGLInfo net.java.games.jogl.impl $(GENSRC_JOGL_IMPL_DIR) $(JOGL_HEADERS) diff --git a/make/gl-common.cfg b/make/gl-common.cfg index f824432d0..32664d7a0 100644 --- a/make/gl-common.cfg +++ b/make/gl-common.cfg @@ -7,6 +7,7 @@ RuntimeExceptionType GLException # Imports needed by all glue code Import java.nio.* Import net.java.games.jogl.* +Import net.java.games.jogl.impl.* # Don't output #defines of GL version identifier strings as constants, # because we don't need them java-side. @@ -362,10 +363,6 @@ Opaque long __GLXextFuncPtr Opaque boolean Bool Opaque long Display * Opaque long GLXContext -Opaque long GLXFBConfig -Opaque long GLXFBConfig * -Opaque long GLXFBConfigSGIX -Opaque long GLXFBConfigSGIX * Opaque long Visual * # Ignore the empty Display and Visual data structures (though made # opaque, the references from XVisualInfo and elsewhere are still @@ -377,3 +374,14 @@ Ignore Visual ArgumentIsString glXGetProcAddress 0 ArgumentIsString glXGetProcAddressARB 0 ReturnsString glXQueryExtensionsString +ReturnsString glXQueryServerString +ReturnsString glXGetClientString +TemporaryCVariableDeclaration glXChooseFBConfig int count; +TemporaryCVariableAssignment glXChooseFBConfig count = _ptr3[0]; +ReturnValueLength glXChooseFBConfig count +TemporaryCVariableDeclaration glXChooseFBConfigSGIX int count; +TemporaryCVariableAssignment glXChooseFBConfigSGIX count = _ptr3[0]; +ReturnValueLength glXChooseFBConfigSGIX count +TemporaryCVariableDeclaration glXGetFBConfigs int count; +TemporaryCVariableAssignment glXGetFBConfigs count = _ptr2[0]; +ReturnValueLength glXGetFBConfigs count diff --git a/make/gl-glx-common.cfg b/make/gl-glx-common.cfg new file mode 100644 index 000000000..2c3a4b4dd --- /dev/null +++ b/make/gl-glx-common.cfg @@ -0,0 +1,64 @@ +# This .cfg file causes the core GLX routines to be ignored from both +# the public API as well as from the GL implementation files on +# non-X11 platforms. + +# Ignore all of the core GLX routines, which are exposed only in the +# implementation GLX class +Ignore glXChooseVisual +Ignore glXCreateContext +Ignore glXDestroyContext +Ignore glXMakeCurrent +Ignore glXCopyContext +Ignore glXSwapBuffers +Ignore glXCreateGLXPixmap +Ignore glXDestroyGLXPixmap +Ignore glXQueryExtension +Ignore glXQueryVersion +Ignore glXIsDirect +Ignore glXGetConfig +Ignore glXGetCurrentContext +Ignore glXGetCurrentDrawable +Ignore glXWaitGL +Ignore glXWaitX +Ignore glXUseXFont +Ignore glXQueryExtensionsString +Ignore glXQueryServerString +Ignore glXGetClientString +Ignore glXGetCurrentDisplay +Ignore glXChooseFBConfig +Ignore glXGetFBConfigAttrib +Ignore glXGetFBConfigs +Ignore glXGetVisualFromFBConfig +Ignore glXCreateWindow +Ignore glXDestroyWindow +Ignore glXCreatePixmap +Ignore glXDestroyPixmap +Ignore glXCreatePbuffer +Ignore glXDestroyPbuffer +Ignore glXQueryDrawable +Ignore glXCreateNewContext +Ignore glXMakeContextCurrent +Ignore glXGetCurrentReadDrawable +Ignore glXQueryContext +Ignore glXSelectEvent +Ignore glXGetSelectedEvent +Ignore glXGetProcAddress + +# Ignore a few extensions that bring in data types we don't want to +# expose in the public API (and that are useless anyway without +# exposing more of the implementation) +Ignore glXGetFBConfigAttribSGIX +Ignore glXChooseFBConfigSGIX +Ignore glXCreateGLXPixmapWithConfigSGIX +Ignore glXCreateContextWithConfigSGIX +Ignore glXGetVisualFromFBConfigSGIX +Ignore glXGetFBConfigFromVisualSGIX +Ignore glXCreateGLXPbufferSGIX +Ignore glXDestroyGLXPbufferSGIX +Ignore glXQueryGLXPbufferSGIX +Ignore glXSelectEventSGIX +Ignore glXGetSelectedEventSGIX +Ignore glXCreateGLXPixmapMESA + +# Now we can ignore the GLXFBConfig data type in the public API +Ignore GLXFBConfig diff --git a/make/gl-glx-macosx.cfg b/make/gl-glx-macosx.cfg deleted file mode 100644 index 7a6d826ce..000000000 --- a/make/gl-glx-macosx.cfg +++ /dev/null @@ -1,10 +0,0 @@ -# This .cfg file is used to generate the interface which contains the -# window system-specific extensions which are exposed (via -# inheritance) to the GL interface. -Package net.java.games.jogl -Style InterfaceOnly -JavaClass MacOSXGL -Include gl-common-macosx.cfg - -# Ignore everything that doesn't start with glX, GLX or XVisualInfo -IgnoreNot ^(glX|GLX|XVisualInf).+ diff --git a/make/gl-glx-x11.cfg b/make/gl-glx-x11.cfg index 99292615a..359e35c62 100644 --- a/make/gl-glx-x11.cfg +++ b/make/gl-glx-x11.cfg @@ -6,5 +6,9 @@ Style InterfaceOnly JavaClass GLX Include gl-common-x11.cfg -# Ignore everything that doesn't start with glX, GLX or XVisualInfo -IgnoreNot ^(glX|GLX|XVisualInf).+ +# Ignore everything that doesn't start with glX or GLX +IgnoreNot ^(glX|GLX).+ + +# Pick up ignores that must also be included in other platforms' impl +# files +Include gl-glx-common.cfg diff --git a/make/gl-impl-macosx.cfg b/make/gl-impl-macosx.cfg index 5ada8af01..5aa8ea786 100644 --- a/make/gl-impl-macosx.cfg +++ b/make/gl-impl-macosx.cfg @@ -6,8 +6,10 @@ JavaClass GL ImplPackage net.java.games.jogl.impl.macosx ImplJavaClass MacOSXGLImpl Include gl-common-macosx.cfg +Include gl-glx-common.cfg EmitProcAddressTable true +ProcAddressTableClassName GLProcAddressTable CustomCCode #include <inttypes.h> diff --git a/make/gl-impl-win32.cfg b/make/gl-impl-win32.cfg index caa65180e..4891bd490 100644 --- a/make/gl-impl-win32.cfg +++ b/make/gl-impl-win32.cfg @@ -6,8 +6,10 @@ JavaClass GL ImplPackage net.java.games.jogl.impl.windows ImplJavaClass WindowsGLImpl Include gl-common-win32.cfg +Include gl-glx-common.cfg EmitProcAddressTable true +ProcAddressTableClassName GLProcAddressTable CustomCCode #define WIN32_LEAN_AND_MEAN CustomCCode #include <windows.h> diff --git a/make/gl-impl-x11.cfg b/make/gl-impl-x11.cfg index 35595e829..2ec48039e 100644 --- a/make/gl-impl-x11.cfg +++ b/make/gl-impl-x11.cfg @@ -6,8 +6,10 @@ JavaClass GL ImplPackage net.java.games.jogl.impl.x11 ImplJavaClass X11GLImpl Include gl-common-x11.cfg +Include gl-glx-common.cfg EmitProcAddressTable true +ProcAddressTableClassName GLProcAddressTable # Pick up XVisualInfo from jogl Ignore XVisualInfo diff --git a/make/glu-impl-common-CustomJavaCode.java b/make/glu-impl-common-CustomJavaCode.java index 8722ea64a..04505db55 100644 --- a/make/glu-impl-common-CustomJavaCode.java +++ b/make/glu-impl-common-CustomJavaCode.java @@ -1,8 +1,11 @@ -/** WARNING: this function is not yet implemented! */ +/** Indicates whether the given GLU routine is available to be called. */ public boolean isFunctionAvailable(String gluFunctionName) { - // TODO FIXME: Implement the GLU equivalent GL.isFunctionAvailable(String) - if (true) throw new GLException("GLU.isFunctionAvailable is not yet implemented."); - - return false; + return (gluProcAddressTable.getAddressFor(gluFunctionName) != 0); +} + +private GLUProcAddressTable gluProcAddressTable; +public GLUImpl(GLUProcAddressTable gluProcAddressTable) +{ + this.gluProcAddressTable = gluProcAddressTable; } diff --git a/make/glu-impl-common.cfg b/make/glu-impl-common.cfg index d4fdb7911..1e6ae0699 100644 --- a/make/glu-impl-common.cfg +++ b/make/glu-impl-common.cfg @@ -5,9 +5,12 @@ Include glu-common.cfg Style ImplOnly +EmitProcAddressTable true +ProcAddressTableClassName GLUProcAddressTable +GetProcAddressTableExpr gluProcAddressTable + # Custom Java code for GLUImpl class IncludeAs CustomJavaCode GLUImpl glu-impl-common-CustomJavaCode.java # Custom C code for GLUImpl class IncludeAs CustomCCode glu-impl-common-CustomCCode.c - diff --git a/make/glu-impl-macosx.cfg b/make/glu-impl-macosx.cfg index cf40212d0..5e856c7ec 100644 --- a/make/glu-impl-macosx.cfg +++ b/make/glu-impl-macosx.cfg @@ -2,3 +2,5 @@ # Mac OS X. Include glu-impl-common.cfg + +CustomCCode #include <inttypes.h> diff --git a/make/glu-impl-x11.cfg b/make/glu-impl-x11.cfg index 42e97a00e..3e46a73b5 100644 --- a/make/glu-impl-x11.cfg +++ b/make/glu-impl-x11.cfg @@ -3,8 +3,6 @@ Include glu-impl-common.cfg -# !! FIXME: Chris doesn't have access to X11 yet, so he -# doesn't know what CustomCCode directives to put in here. - +CustomCCode #include <inttypes.h> diff --git a/make/glx-x11.cfg b/make/glx-x11.cfg index f9a69c0b3..39098f0a8 100644 --- a/make/glx-x11.cfg +++ b/make/glx-x11.cfg @@ -5,13 +5,24 @@ JavaClass GLX Style allstatic Include gl-common-x11.cfg +EmitProcAddressTable true +ProcAddressTableClassName GLXProcAddressTable +GetProcAddressTableExpr glxProcAddressTable +# This must be present for bootstrapping +SkipProcAddressGen glXGetProcAddressARB + +CustomJavaCode GLX private static GLXProcAddressTable glxProcAddressTable = new GLXProcAddressTable(); +CustomJavaCode GLX public static GLXProcAddressTable getGLXProcAddressTable() { return glxProcAddressTable; } +CustomJavaCode GLX public static native long dlsym(String name); + CustomCCode #include <inttypes.h> CustomCCode #include <X11/Xlib.h> CustomCCode #include <X11/Xutil.h> CustomCCode #include <GL/glx.h> - -# Pick up XVisualInfo from jogl -Ignore XVisualInfo +CustomCCode /* Linux headers don't work properly */ +CustomCCode #define __USE_GNU +CustomCCode #include <dlfcn.h> +CustomCCode #undef __USE_GNU ArgumentIsString XOpenDisplay 0 @@ -26,3 +37,72 @@ CustomCCode JNIEXPORT jlong JNICALL CustomCCode Java_net_java_games_jogl_impl_x11_GLX_RootWindow(JNIEnv *env, jclass _unused, jlong display, jint screen) { CustomCCode return RootWindow((Display*) (intptr_t) display, screen); CustomCCode } +CustomCCode JNIEXPORT jlong JNICALL +CustomCCode Java_net_java_games_jogl_impl_x11_GLX_dlsym(JNIEnv *env, jclass _unused, jstring name) { +CustomCCode const jbyte* chars; +CustomCCode void* res; +CustomCCode chars = (*env)->GetStringUTFChars(env, name, NULL); +CustomCCode res = dlsym(RTLD_DEFAULT, chars); +CustomCCode (*env)->ReleaseStringUTFChars(env, name, chars); +CustomCCode return (jlong) ((intptr_t) res); +CustomCCode } + +# Ignore everything not in the GLX core (up through GLX 1.4) aside from glXGetProcAddress +# FIXME: this needs to be kept in sync with the stub headers more than usual +Ignore glXFreeContextEXT +Ignore glXGetContextIDEXT +Ignore glXGetCurrentDisplayEXT +Ignore glXImportContextEXT +Ignore glXQueryContextInfoEXT + +Ignore glXCopySubBufferMESA +Ignore glXCreateGLXPixmapMESA +Ignore glXReleaseBuffersMESA +Ignore glXSet3DfxModeMESA + +Ignore glXGetSyncValuesOML +Ignore glXGetMscRateOML +Ignore glXSwapBuffersMscOML +Ignore glXWaitForMscOML +Ignore glXWaitForSbcOML + +Ignore glXAllocateMemoryNV +Ignore glXFreeMemoryNV + +Ignore glXCushionSGI +Ignore glXGetVideoSyncSGI +Ignore glXWaitVideoSyncSGI +Ignore glXSwapIntervalSGI +Ignore glXMakeCurrentReadSGI +Ignore glXGetCurrentReadDrawableSGI + +Ignore glXCreateGLXVideoSourceSGIX +Ignore glXDestroyGLXVideoSourceSGIX +Ignore glXGetFBConfigAttribSGIX +Ignore glXChooseFBConfigSGIX +Ignore glXCreateGLXPixmapWithConfigSGIX +Ignore glXCreateContextWithConfigSGIX +Ignore glXGetVisualFromFBConfigSGIX +Ignore glXGetFBConfigFromVisualSGIX +Ignore glXCreateGLXPbufferSGIX +Ignore glXDestroyGLXPbufferSGIX +Ignore glXQueryGLXPbufferSGIX +Ignore glXSelectEventSGIX +Ignore glXGetSelectedEventSGIX +Ignore glXBindChannelToWindowSGIX +Ignore glXChannelRectSGIX +Ignore glXQueryChannelRectSGIX +Ignore glXQueryChannelDeltasSGIX +Ignore glXChannelRectSyncSGIX +Ignore glXAssociateDMPbufferSGIX +Ignore glXJoinSwapGroupSGIX +Ignore glXBindSwapBarrierSGIX +Ignore glXQueryMaxSwapBarriersSGIX + +Ignore glXGetTransparentIndexSUN + +# Ignore non-GLX GL routines and constants +Ignore ^GL_.+ +Ignore TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB +Ignore CLAMP_TO_EDGE_EXT +Ignore ^gl[^X].+ diff --git a/make/stub_includes/opengl/GL/glu.h b/make/stub_includes/opengl/GL/glu.h index 89c3f34e3..8f64238f2 100644 --- a/make/stub_includes/opengl/GL/glu.h +++ b/make/stub_includes/opengl/GL/glu.h @@ -330,6 +330,67 @@ GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GL GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ); GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW); + +typedef void (GLAPIENTRY * PFNGLUBEGINCURVEPROC) (GLUnurbs* nurb); +typedef void (GLAPIENTRY * PFNGLUBEGINPOLYGONPROC) (GLUtesselator* tess); +typedef void (GLAPIENTRY * PFNGLUBEGINSURFACEPROC) (GLUnurbs* nurb); +typedef void (GLAPIENTRY * PFNGLUBEGINTRIMPROC) (GLUnurbs* nurb); +typedef GLint (GLAPIENTRY * PFNGLUBUILD1DMIPMAPLEVELSPROC) (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); +typedef GLint (GLAPIENTRY * PFNGLUBUILD1DMIPMAPSPROC) (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data); +typedef GLint (GLAPIENTRY * PFNGLUBUILD2DMIPMAPLEVELSPROC) (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); +typedef GLint (GLAPIENTRY * PFNGLUBUILD2DMIPMAPSPROC) (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data); +typedef GLint (GLAPIENTRY * PFNGLUBUILD3DMIPMAPLEVELSPROC) (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); +typedef GLint (GLAPIENTRY * PFNGLUBUILD3DMIPMAPSPROC) (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +typedef GLboolean (GLAPIENTRY * PFNGLUCHECKEXTENSIONPROC) (const GLubyte *extName, const GLubyte *extString); +typedef void (GLAPIENTRY * PFNGLUCYLINDERPROC) (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks); +typedef void (GLAPIENTRY * PFNGLUDELETENURBSRENDERERPROC) (GLUnurbs* nurb); +typedef void (GLAPIENTRY * PFNGLUDELETEQUADRICPROC) (GLUquadric* quad); +typedef void (GLAPIENTRY * PFNGLUDELETETESSPROC) (GLUtesselator* tess); +typedef void (GLAPIENTRY * PFNGLUDISKPROC) (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops); +typedef void (GLAPIENTRY * PFNGLUENDCURVEPROC) (GLUnurbs* nurb); +typedef void (GLAPIENTRY * PFNGLUENDPOLYGONPROC) (GLUtesselator* tess); +typedef void (GLAPIENTRY * PFNGLUENDSURFACEPROC) (GLUnurbs* nurb); +typedef void (GLAPIENTRY * PFNGLUENDTRIMPROC) (GLUnurbs* nurb); +typedef const GLubyte * (GLAPIENTRY * PFNGLUERRORSTRINGPROC) (GLenum error); +typedef void (GLAPIENTRY * PFNGLUGETNURBSPROPERTYPROC) (GLUnurbs* nurb, GLenum property, GLfloat* data); +typedef const GLubyte * (GLAPIENTRY * PFNGLUGETSTRINGPROC) (GLenum name); +typedef void (GLAPIENTRY * PFNGLUGETTESSPROPERTYPROC) (GLUtesselator* tess, GLenum which, GLdouble* data); +typedef void (GLAPIENTRY * PFNGLULOADSAMPLINGMATRICESPROC) (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view); +typedef void (GLAPIENTRY * PFNGLULOOKATPROC) (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); +typedef GLUnurbs* (GLAPIENTRY * PFNGLUNEWNURBSRENDERERPROC) (void); +typedef GLUquadric* (GLAPIENTRY * PFNGLUNEWQUADRICPROC) (void); +typedef GLUtesselator* (GLAPIENTRY * PFNGLUNEWTESSPROC) (void); +typedef void (GLAPIENTRY * PFNGLUNEXTCONTOURPROC) (GLUtesselator* tess, GLenum type); +typedef void (GLAPIENTRY * PFNGLUNURBSCALLBACKPROC) (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc); +typedef void (GLAPIENTRY * PFNGLUNURBSCALLBACKDATAPROC) (GLUnurbs* nurb, GLvoid* userData); +typedef void (GLAPIENTRY * PFNGLUNURBSCALLBACKDATAEXTPROC) (GLUnurbs* nurb, GLvoid* userData); +typedef void (GLAPIENTRY * PFNGLUNURBSCURVEPROC) (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type); +typedef void (GLAPIENTRY * PFNGLUNURBSPROPERTYPROC) (GLUnurbs* nurb, GLenum property, GLfloat value); +typedef void (GLAPIENTRY * PFNGLUNURBSSURFACEPROC) (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type); +typedef void (GLAPIENTRY * PFNGLUORTHO2DPROC) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); +typedef void (GLAPIENTRY * PFNGLUPARTIALDISKPROC) (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep); +typedef void (GLAPIENTRY * PFNGLUPERSPECTIVEPROC) (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); +typedef void (GLAPIENTRY * PFNGLUPICKMATRIXPROC) (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport); +typedef GLint (GLAPIENTRY * PFNGLUPROJECTPROC) (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ); +typedef void (GLAPIENTRY * PFNGLUPWLCURVEPROC) (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type); +typedef void (GLAPIENTRY * PFNGLUQUADRICCALLBACKPROC) (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc); +typedef void (GLAPIENTRY * PFNGLUQUADRICDRAWSTYLEPROC) (GLUquadric* quad, GLenum draw); +typedef void (GLAPIENTRY * PFNGLUQUADRICNORMALSPROC) (GLUquadric* quad, GLenum normal); +typedef void (GLAPIENTRY * PFNGLUQUADRICORIENTATIONPROC) (GLUquadric* quad, GLenum orientation); +typedef void (GLAPIENTRY * PFNGLUQUADRICTEXTUREPROC) (GLUquadric* quad, GLboolean texture); +typedef GLint (GLAPIENTRY * PFNGLUSCALEIMAGEPROC) (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut); +typedef void (GLAPIENTRY * PFNGLUSPHEREPROC) (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks); +typedef void (GLAPIENTRY * PFNGLUTESSBEGINCONTOURPROC) (GLUtesselator* tess); +typedef void (GLAPIENTRY * PFNGLUTESSBEGINPOLYGONPROC) (GLUtesselator* tess, GLvoid* data); +typedef void (GLAPIENTRY * PFNGLUTESSCALLBACKPROC) (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc); +typedef void (GLAPIENTRY * PFNGLUTESSENDCONTOURPROC) (GLUtesselator* tess); +typedef void (GLAPIENTRY * PFNGLUTESSENDPOLYGONPROC) (GLUtesselator* tess); +typedef void (GLAPIENTRY * PFNGLUTESSNORMALPROC) (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ); +typedef void (GLAPIENTRY * PFNGLUTESSPROPERTYPROC) (GLUtesselator* tess, GLenum which, GLdouble data); +typedef void (GLAPIENTRY * PFNGLUTESSVERTEXPROC) (GLUtesselator* tess, GLdouble *location, GLvoid* data); +typedef GLint (GLAPIENTRY * PFNGLUUNPROJECTPROC) (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ); +typedef GLint (GLAPIENTRY * PFNGLUUNPROJECT4PROC) (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW); + #ifdef __cplusplus } #endif diff --git a/make/stub_includes/win32/windows.h b/make/stub_includes/win32/windows.h index 24b9df4fa..fa4ae1c95 100644 --- a/make/stub_includes/win32/windows.h +++ b/make/stub_includes/win32/windows.h @@ -20,6 +20,7 @@ typedef HANDLE HBITMAP; typedef HANDLE HDC; typedef HANDLE HGDIOBJ; typedef HANDLE HGLRC; +typedef HANDLE HMODULE; typedef HANDLE HPALETTE; typedef HANDLE HWND; typedef long LONG; diff --git a/make/stub_includes/win32/wingdi.h b/make/stub_includes/win32/wingdi.h index 5365a8990..3cb6f8568 100644 --- a/make/stub_includes/win32/wingdi.h +++ b/make/stub_includes/win32/wingdi.h @@ -115,6 +115,8 @@ typedef struct tagPIXELFORMATDESCRIPTOR // Windows routines WINBASEAPI DWORD WINAPI GetLastError(VOID); +WINBASEAPI HMODULE WINAPI LoadLibraryA(LPCSTR lpLibFileName); +WINBASEAPI PROC WINAPI GetProcAddress(HMODULE hModule, LPCSTR lpProcName); // OpenGL-related routines WINGDIAPI int WINAPI ChoosePixelFormat(HDC, CONST PIXELFORMATDESCRIPTOR *); @@ -148,4 +150,3 @@ WINGDIAPI HBITMAP WINAPI CreateDIBSection(HDC, CONST BITMAPINFO *, UINT, VOID ** WINGDIAPI BOOL WINAPI DeleteDC(HDC); WINGDIAPI BOOL WINAPI DeleteObject(HGDIOBJ); WINGDIAPI HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ); - diff --git a/make/stub_includes/x11/X11/X.h b/make/stub_includes/x11/X11/X.h index 8aa8500cb..2cd64bbf0 100644 --- a/make/stub_includes/x11/X11/X.h +++ b/make/stub_includes/x11/X11/X.h @@ -10,6 +10,7 @@ typedef unsigned long VisualID; typedef XID Colormap; typedef XID Cursor; typedef XID Drawable; +typedef XID Font; typedef XID GContext; typedef XID KeySym; typedef XID Pixmap; diff --git a/make/stub_includes/x11/X11/Xutil.h b/make/stub_includes/x11/X11/Xutil.h index 017f8fb98..32c8d5be5 100644 --- a/make/stub_includes/x11/X11/Xutil.h +++ b/make/stub_includes/x11/X11/Xutil.h @@ -1,3 +1,6 @@ +#ifndef _XUTIL_H_ +#define _XUTIL_H_ + #include <X11/X.h> #include <X11/Xlib.h> @@ -30,3 +33,5 @@ typedef struct { #define VisualColormapSizeMask 0x80 #define VisualBitsPerRGBMask 0x100 #define VisualAllMask 0x1FF + +#endif /* #defined _XUTIL_H_ */ diff --git a/make/stub_includes/x11/window-system.c b/make/stub_includes/x11/window-system.c index 55e70c7f7..6af85eeb9 100644 --- a/make/stub_includes/x11/window-system.c +++ b/make/stub_includes/x11/window-system.c @@ -1,140 +1,10 @@ -/* - * Essential glX and supporting routines and data structures extracted - * from glx.h. - * - * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. - */ +// Define GLX_GLXEXT_PROTOTYPES so that the OpenGL GLX extension prototypes in +// "glxext.h" are parsed. +#define GLX_GLXEXT_PROTOTYPES #include <X11/Xlib.h> #include <X11/Xutil.h> - -/* - * Tokens for glXChooseVisual and glXGetConfig: - */ -#define GLX_USE_GL 1 -#define GLX_BUFFER_SIZE 2 -#define GLX_LEVEL 3 -#define GLX_RGBA 4 -#define GLX_DOUBLEBUFFER 5 -#define GLX_STEREO 6 -#define GLX_AUX_BUFFERS 7 -#define GLX_RED_SIZE 8 -#define GLX_GREEN_SIZE 9 -#define GLX_BLUE_SIZE 10 -#define GLX_ALPHA_SIZE 11 -#define GLX_DEPTH_SIZE 12 -#define GLX_STENCIL_SIZE 13 -#define GLX_ACCUM_RED_SIZE 14 -#define GLX_ACCUM_GREEN_SIZE 15 -#define GLX_ACCUM_BLUE_SIZE 16 -#define GLX_ACCUM_ALPHA_SIZE 17 - -/* - * Error codes returned by glXGetConfig: - */ -#define GLX_BAD_SCREEN 1 -#define GLX_BAD_ATTRIBUTE 2 -#define GLX_NO_EXTENSION 3 -#define GLX_BAD_VISUAL 4 -#define GLX_BAD_CONTEXT 5 -#define GLX_BAD_VALUE 6 -#define GLX_BAD_ENUM 7 - -/* - * GLX 1.3 and later: - */ -#define GLX_CONFIG_CAVEAT 0x20 -#define GLX_DONT_CARE 0xFFFFFFFF -#define GLX_SLOW_CONFIG 0x8001 -#define GLX_NON_CONFORMANT_CONFIG 0x800D -#define GLX_X_VISUAL_TYPE 0x22 -#define GLX_TRANSPARENT_TYPE 0x23 -#define GLX_TRANSPARENT_INDEX_VALUE 0x24 -#define GLX_TRANSPARENT_RED_VALUE 0x25 -#define GLX_TRANSPARENT_GREEN_VALUE 0x26 -#define GLX_TRANSPARENT_BLUE_VALUE 0x27 -#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 -#define GLX_MAX_PBUFFER_WIDTH 0x8016 -#define GLX_MAX_PBUFFER_HEIGHT 0x8017 -#define GLX_MAX_PBUFFER_PIXELS 0x8018 -#define GLX_PRESERVED_CONTENTS 0x801B -#define GLX_LARGEST_PBUFFER 0x801C -#define GLX_WIDTH 0x801D -#define GLX_HEIGHT 0x801E -#define GLX_EVENT_MASK 0x801F -#define GLX_DRAWABLE_TYPE 0x8010 -#define GLX_FBCONFIG_ID 0x8013 -#define GLX_VISUAL_ID 0x800B -#define GLX_WINDOW_BIT 0x00000001 -#define GLX_PIXMAP_BIT 0x00000002 -#define GLX_PBUFFER_BIT 0x00000004 -#define GLX_AUX_BUFFERS_BIT 0x00000010 -#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 -#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 -#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 -#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 -#define GLX_DEPTH_BUFFER_BIT 0x00000020 -#define GLX_STENCIL_BUFFER_BIT 0x00000040 -#define GLX_ACCUM_BUFFER_BIT 0x00000080 -#define GLX_DRAWABLE_TYPE 0x8010 -#define GLX_RENDER_TYPE 0x8011 -#define GLX_X_RENDERABLE 0x8012 -#define GLX_NONE 0x8000 -#define GLX_TRUE_COLOR 0x8002 -#define GLX_DIRECT_COLOR 0x8003 -#define GLX_PSEUDO_COLOR 0x8004 -#define GLX_STATIC_COLOR 0x8005 -#define GLX_GRAY_SCALE 0x8006 -#define GLX_STATIC_GRAY 0x8007 -#define GLX_TRANSPARENT_RGB 0x8008 -#define GLX_TRANSPARENT_INDEX 0x8009 -#define GLX_RGBA_TYPE 0x8014 -#define GLX_COLOR_INDEX_TYPE 0x8015 -#define GLX_COLOR_INDEX_BIT 0x00000002 -#define GLX_RGBA_BIT 0x00000001 -#define GLX_SCREEN 0x800C -#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 -#define GLX_DAMAGED 0x8020 -#define GLX_SAVED 0x8021 -#define GLX_WINDOW 0x8022 -#define GLX_PBUFFER 0x8023 -#define GLX_PBUFFER_HEIGHT 0x8040 -#define GLX_PBUFFER_WIDTH 0x8041 - -/* - * GLX 1.4 and later: - */ -#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/ -#define GLX_SAMPLES 0x186a1 /*100001*/ - -extern XVisualInfo* glXChooseVisual( Display *dpy, int screen, - int *attribList ); - -extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis, - GLXContext shareList, Bool direct ); - -extern void glXDestroyContext( Display *dpy, GLXContext ctx ); - -extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, - GLXContext ctx); - -extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, - unsigned long mask ); - -extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); - -extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual, - Pixmap pixmap ); - -extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap ); - -// Use ARB version for compatibility with older GLX installations -extern __GLXextFuncPtr glXGetProcAddressARB(const GLubyte *procname); - -extern int glXGetConfig( Display *dpy, XVisualInfo *visual, - int attrib, int *value ); - -extern const char *glXQueryExtensionsString( Display *dpy, int screen ); +#include <GL/glx.h> // Routines needed from Xlib.h and Xutil.h (placed here to avoid having // XVisualInfo generated multiple times) diff --git a/make/wingdi-win32.cfg b/make/wingdi-win32.cfg index 3b0a011fa..622cef25d 100644 --- a/make/wingdi-win32.cfg +++ b/make/wingdi-win32.cfg @@ -10,6 +10,8 @@ Include gl-common-win32.cfg # Implement the first argument to wglGetProcAddress as String instead # of byte[] ArgumentIsString wglGetProcAddress 0 +ArgumentIsString LoadLibraryA 0 +ArgumentIsString GetProcAddress 1 CustomCCode #define WIN32_LEAN_AND_MEAN CustomCCode #include <windows.h> |