1 2 #ifndef BGLBUILD_H_INCLUDED_ 3 #define BGLBUILD_H_INCLUDED_ 4 5 #ifdef USE_OPENGL 6 7 #if !defined GEKKO && !defined EDUKE32_GLES 8 # define DYNAMIC_GL 9 # define DYNAMIC_GLU 10 # define DYNAMIC_GLEXT 11 # define USE_GLEXT 12 #endif 13 14 #if defined EDUKE32_OSX 15 # include <OpenGL/glu.h> 16 #else 17 # include <GL/glu.h> 18 #endif 19 #if defined EDUKE32_GLES 20 # include "jwzgles.h" 21 #endif 22 23 # ifdef _WIN32 24 # define PR_CALLBACK __stdcall 25 # else 26 # define PR_CALLBACK 27 # endif 28 // custom error checking 29 30 extern GLenum BuildGLError; 31 extern void BuildGLErrorCheck(void); 32 33 34 //////// dynamic/static API wrapping //////// 35 36 #if !defined RENDERTYPESDL && defined _WIN32 && defined DYNAMIC_GL 37 typedef HGLRC (WINAPI * bwglCreateContextProcPtr)(HDC); 38 extern bwglCreateContextProcPtr bwglCreateContext; 39 #define wglCreateContext bwglCreateContext 40 typedef BOOL (WINAPI * bwglDeleteContextProcPtr)(HGLRC); 41 extern bwglDeleteContextProcPtr bwglDeleteContext; 42 #define wglDeleteContext bwglDeleteContext 43 typedef PROC (WINAPI * bwglGetProcAddressProcPtr)(LPCSTR); 44 extern bwglGetProcAddressProcPtr bwglGetProcAddress; 45 #define wglGetProcAddress bwglGetProcAddress 46 typedef BOOL (WINAPI * bwglMakeCurrentProcPtr)(HDC,HGLRC); 47 extern bwglMakeCurrentProcPtr bwglMakeCurrent; 48 #define wglMakeCurrent bwglMakeCurrent 49 50 typedef int32_t (WINAPI * bwglChoosePixelFormatProcPtr)(HDC,CONST PIXELFORMATDESCRIPTOR*); 51 extern bwglChoosePixelFormatProcPtr bwglChoosePixelFormat; 52 #define wglChoosePixelFormat bwglChoosePixelFormat 53 typedef int32_t (WINAPI * bwglDescribePixelFormatProcPtr)(HDC,int32_t,UINT,LPPIXELFORMATDESCRIPTOR); 54 extern bwglDescribePixelFormatProcPtr bwglDescribePixelFormat; 55 #define wglDescribePixelFormat bwglDescribePixelFormat 56 typedef int32_t (WINAPI * bwglGetPixelFormatProcPtr)(HDC); 57 extern bwglGetPixelFormatProcPtr bwglGetPixelFormat; 58 #define wglGetPixelFormat bwglGetPixelFormat 59 typedef BOOL (WINAPI * bwglSetPixelFormatProcPtr)(HDC,int32_t,const PIXELFORMATDESCRIPTOR*); 60 extern bwglSetPixelFormatProcPtr bwglSetPixelFormat; 61 #define wglSetPixelFormat bwglSetPixelFormat 62 #endif 63 64 #if defined DYNAMIC_GLU 65 66 // GLU 67 #if defined __clang__ && defined __APPLE__ 68 // XXX: OS X 10.9 deprecated GLUtesselator. 69 #pragma clang diagnostic push 70 #pragma clang diagnostic ignored "-Wdeprecated-declarations" 71 #endif 72 73 typedef void (APIENTRY * bgluTessBeginContourProcPtr)(GLUtesselator* tess); 74 extern bgluTessBeginContourProcPtr bgluTessBeginContour; 75 typedef void (APIENTRY * bgluTessBeginPolygonProcPtr)(GLUtesselator* tess, GLvoid* data); 76 extern bgluTessBeginPolygonProcPtr bgluTessBeginPolygon; 77 typedef void (APIENTRY * bgluTessCallbackProcPtr)(GLUtesselator* tess, GLenum which, void (PR_CALLBACK CallBackFuncProcPtr)()); 78 extern bgluTessCallbackProcPtr bgluTessCallback; 79 typedef void (APIENTRY * bgluTessEndContourProcPtr)(GLUtesselator* tess); 80 extern bgluTessEndContourProcPtr bgluTessEndContour; 81 typedef void (APIENTRY * bgluTessEndPolygonProcPtr)(GLUtesselator* tess); 82 extern bgluTessEndPolygonProcPtr bgluTessEndPolygon; 83 typedef void (APIENTRY * bgluTessNormalProcPtr)(GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ); 84 extern bgluTessNormalProcPtr bgluTessNormal; 85 typedef void (APIENTRY * bgluTessPropertyProcPtr)(GLUtesselator* tess, GLenum which, GLdouble data); 86 extern bgluTessPropertyProcPtr bgluTessProperty; 87 typedef void (APIENTRY * bgluTessVertexProcPtr)(GLUtesselator* tess, GLdouble *location, GLvoid* data); 88 extern bgluTessVertexProcPtr bgluTessVertex; 89 typedef GLUtesselator* (APIENTRY * bgluNewTessProcPtr)(void); 90 extern bgluNewTessProcPtr bgluNewTess; 91 typedef void (APIENTRY * bgluDeleteTessProcPtr)(GLUtesselator* tess); 92 extern bgluDeleteTessProcPtr bgluDeleteTess; 93 94 #if defined __clang__ && defined __APPLE__ 95 #pragma clang diagnostic pop 96 #endif 97 98 typedef void (APIENTRY * bgluPerspectiveProcPtr)(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); 99 extern bgluPerspectiveProcPtr bgluPerspective; 100 101 typedef const GLubyte * (APIENTRY * bgluErrorStringProcPtr)(GLenum error); 102 extern bgluErrorStringProcPtr bgluErrorString; 103 104 typedef GLint (APIENTRY * bgluProjectProcPtr)(GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ); 105 extern bgluProjectProcPtr bgluProject; 106 typedef GLint (APIENTRY * bgluUnProjectProcPtr)(GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble* objX, GLdouble* objY, GLdouble* objZ); 107 extern bgluUnProjectProcPtr bgluUnProject; 108 109 typedef void (APIENTRY * bgluLookAtProcPtr)(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); 110 extern bgluLookAtProcPtr bgluLookAt; 111 112 #else 113 114 #define bgluTessBeginContour gluTessBeginContour 115 #define bgluTessBeginPolygon gluTessBeginPolygon 116 #define bgluTessCallback gluTessCallback 117 #define bgluTessEndContour gluTessEndContour 118 #define bgluTessEndPolygon gluTessEndPolygon 119 #define bgluTessNormal gluTessNormal 120 #define bgluTessProperty gluTessProperty 121 #define bgluTessVertex gluTessVertex 122 #define bgluNewTess gluNewTess 123 #define bgluDeleteTess gluDeleteTess 124 125 #define bgluPerspective gluPerspective 126 127 #define bgluErrorString gluErrorString 128 129 #define bgluProject gluProject 130 #define bgluUnProject gluUnProject 131 132 #define bgluLookAt gluLookAt 133 134 #endif 135 136 137 //////// glGenTextures/glDeleteTextures debugging //////// 138 void texdbg_bglGenTextures(GLsizei n, GLuint *textures, const char *srcfn); 139 void texdbg_bglDeleteTextures(GLsizei n, const GLuint *textures, const char *srcfn); 140 141 //#define DEBUG_TEXTURE_NAMES 142 143 #if defined DEBUGGINGAIDS && defined DEBUG_TEXTURE_NAMES 144 # define glGenTextures(numtexs, texnamear) texdbg_bglGenTextures(numtexs, texnamear, __FILE__) 145 # define glDeleteTextures(numtexs, texnamear) texdbg_bglDeleteTextures(numtexs, texnamear, __FILE__) 146 #endif 147 148 #endif //USE_OPENGL 149 150 #if !defined RENDERTYPESDL && defined _WIN32 && defined DYNAMIC_GL 151 extern char *gldriver; 152 153 int32_t loadwgl(const char *driver); 154 int32_t unloadwgl(void); 155 #endif 156 157 #ifdef POLYMER 158 int32_t loadglulibrary(const char *driver); 159 int32_t unloadglulibrary(void); 160 #endif 161 162 #endif 163