summaryrefslogtreecommitdiff
path: root/src/oglfunc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/oglfunc.h')
-rw-r--r--src/oglfunc.h226
1 files changed, 147 insertions, 79 deletions
diff --git a/src/oglfunc.h b/src/oglfunc.h
index 93490d2..62622fb 100644
--- a/src/oglfunc.h
+++ b/src/oglfunc.h
@@ -5,8 +5,10 @@
#include <windows.h>
#endif
+#include "SDL_version.h"
+
#if defined(USE_OPENGL_ES)
-#include "SDL_opengles.h"
+#include "SDL_opengles2.h"
// OpenGL compatibility
typedef GLclampf GLclampd;
@@ -25,91 +27,157 @@ typedef GLfloat GLdouble;
#define APIENTRY
#endif
-typedef void (APIENTRY *PFNGLALPHAFUNCPROC)(GLenum, GLclampf);
-typedef void (APIENTRY *PFNGLBINDTEXTUREPROC)(GLenum, GLuint);
-typedef void (APIENTRY *PFNGLBLENDFUNCPROC)(GLenum, GLenum);
-typedef void (APIENTRY *PFNGLCLEARPROC)(GLbitfield);
-typedef void (APIENTRY *PFNGLCLEARCOLORPROC)(GLclampf, GLclampf, GLclampf, GLclampf);
-typedef void (APIENTRY *PFNGLCOLOR4FPROC)(GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (APIENTRY *PFNGLCOLORPOINTERPROC)(GLint, GLenum, GLsizei, const GLvoid *);
-typedef void (APIENTRY *PFNGLCULLFACEPROC)(GLenum);
-typedef void (APIENTRY *PFNGLDELETETEXTURESPROC)(GLsizei,const GLuint*);
-typedef void (APIENTRY *PFNGLDEPTHFUNCPROC)(GLenum);
-typedef void (APIENTRY *PFNGLDEPTHMASKPROC)(GLboolean);
-typedef void (APIENTRY *PFNGLDEPTHRANGEPROC)(GLclampd, GLclampd);
-typedef void (APIENTRY *PFNGLDISABLEPROC)(GLenum);
-typedef void (APIENTRY *PFNGLDISABLECLIENTSTATEPROC)(GLenum);
-typedef void (APIENTRY *PFNGLDRAWELEMENTSPROC)(GLenum, GLsizei, GLenum, const GLvoid *);
-typedef void (APIENTRY *PFNGLENABLEPROC)(GLenum);
-typedef void (APIENTRY *PFNGLENABLECLIENTSTATEPROC)(GLenum);
-typedef void (APIENTRY *PFNGLFRONTFACEPROC)(GLenum);
-typedef void (APIENTRY *PFNGLGENTEXTURESPROC)(GLsizei,GLuint*);
-typedef GLenum (APIENTRY *PFNGLGETERRORPROC)(void);
-typedef void (APIENTRY *PFNGLGETFLOATVPROC)(GLenum, GLfloat *);
-typedef void (APIENTRY *PFNGLGETINTEGERVPROC)(GLenum, GLint *);
-typedef const GLubyte* (APIENTRY *PFNGLGETSTRINGPROC)(GLenum);
-typedef void (APIENTRY *PFNGLGETTEXPARAMETERFVPROC)(GLenum, GLenum, GLfloat*);
-typedef void (APIENTRY *PFNGLHINTPROC)(GLenum, GLenum);
-typedef void (APIENTRY *PFNGLPIXELSTOREIPROC)(GLenum, GLint);
-typedef void (APIENTRY *PFNGLPOLYGONOFFSETPROC)(GLfloat, GLfloat);
-typedef void (APIENTRY *PFNGLREADPIXELSPROC)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *);
-typedef void (APIENTRY *PFNGLSHADEMODELPROC)(GLenum);
-typedef void (APIENTRY *PFNGLTEXCOORDPOINTERPROC)(GLint, GLenum, GLsizei, const GLvoid *);
-typedef void (APIENTRY *PFNGLTEXENVFPROC)(GLenum, GLenum, GLfloat);
-typedef void (APIENTRY *PFNGLTEXENVFVPROC)(GLenum, GLenum, const GLfloat *);
-typedef void (APIENTRY *PFNGLTEXENVIPROC)(GLenum, GLenum, GLint);
-typedef void (APIENTRY *PFNGLTEXIMAGE2DPROC)(GLenum,GLint,GLint,GLsizei,GLsizei,GLint,GLenum,GLenum,const GLvoid*);
-typedef void (APIENTRY *PFNGLTEXPARAMETERFPROC)(GLenum, GLenum, GLfloat);
-typedef void (APIENTRY *PFNGLTEXPARAMETERIPROC)(GLenum, GLenum, GLint);
-typedef void (APIENTRY *PFNGLTEXSUBIMAGE2DPROC)(GLenum,GLint,GLint,GLint,GLsizei,GLsizei,GLenum,GLenum,const GLvoid*);
-typedef void (APIENTRY *PFNGLVERTEXPOINTERPROC)(GLint, GLenum, GLsizei, const GLvoid *);
-typedef void (APIENTRY *PFNGLVIEWPORTPROC)(GLint, GLint, GLsizei, GLsizei);
+// Base OpenGL / OpenGL ES
+typedef void (APIENTRY *avpPFNGLACTIVETEXTUREPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLBINDTEXTUREPROC)(GLenum, GLuint);
+typedef void (APIENTRY *avpPFNGLBLENDFUNCPROC)(GLenum, GLenum);
+typedef void (APIENTRY *avpPFNGLCLEARPROC)(GLbitfield);
+typedef void (APIENTRY *avpPFNGLCLEARCOLORPROC)(GLclampf, GLclampf, GLclampf, GLclampf);
+typedef void (APIENTRY *avpPFNGLCULLFACEPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLDELETETEXTURESPROC)(GLsizei,const GLuint*);
+typedef void (APIENTRY *avpPFNGLDEPTHFUNCPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLDEPTHMASKPROC)(GLboolean);
+typedef void (APIENTRY *avpPFNGLDEPTHRANGEPROC)(GLclampd, GLclampd);
+typedef void (APIENTRY *avpPFNGLDISABLEPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLDRAWELEMENTSPROC)(GLenum, GLsizei, GLenum, const GLvoid *);
+typedef void (APIENTRY *avpPFNGLENABLEPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLFRONTFACEPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLGENTEXTURESPROC)(GLsizei,GLuint*);
+typedef GLenum (APIENTRY *avpPFNGLGETERRORPROC)(void);
+typedef void (APIENTRY *avpPFNGLGETFLOATVPROC)(GLenum, GLfloat *);
+typedef void (APIENTRY *avpPFNGLGETINTEGERVPROC)(GLenum, GLint *);
+typedef const GLubyte* (APIENTRY *avpPFNGLGETSTRINGPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLGETTEXPARAMETERFVPROC)(GLenum, GLenum, GLfloat*);
+typedef void (APIENTRY *avpPFNGLHINTPROC)(GLenum, GLenum);
+typedef void (APIENTRY *avpPFNGLPIXELSTOREIPROC)(GLenum, GLint);
+typedef void (APIENTRY *avpPFNGLPOLYGONOFFSETPROC)(GLfloat, GLfloat);
+typedef void (APIENTRY *avpPFNGLREADPIXELSPROC)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *);
+typedef void (APIENTRY *avpPFNGLTEXIMAGE2DPROC)(GLenum,GLint,GLint,GLsizei,GLsizei,GLint,GLenum,GLenum,const GLvoid*);
+typedef void (APIENTRY *avpPFNGLTEXPARAMETERFPROC)(GLenum, GLenum, GLfloat);
+typedef void (APIENTRY *avpPFNGLTEXPARAMETERIPROC)(GLenum, GLenum, GLint);
+typedef void (APIENTRY *avpPFNGLTEXSUBIMAGE2DPROC)(GLenum,GLint,GLint,GLint,GLsizei,GLsizei,GLenum,GLenum,const GLvoid*);
+typedef void (APIENTRY *avpPFNGLVIEWPORTPROC)(GLint, GLint, GLsizei, GLsizei);
+
+extern avpPFNGLACTIVETEXTUREPROC pglActiveTexture;
+extern avpPFNGLBINDTEXTUREPROC pglBindTexture;
+extern avpPFNGLBLENDFUNCPROC pglBlendFunc;
+extern avpPFNGLCLEARPROC pglClear;
+extern avpPFNGLCLEARCOLORPROC pglClearColor;
+extern avpPFNGLCULLFACEPROC pglCullFace;
+extern avpPFNGLDELETETEXTURESPROC pglDeleteTextures;
+extern avpPFNGLDEPTHFUNCPROC pglDepthFunc;
+extern avpPFNGLDEPTHMASKPROC pglDepthMask;
+extern avpPFNGLDEPTHRANGEPROC pglDepthRange;
+extern avpPFNGLDISABLEPROC pglDisable;
+extern avpPFNGLDRAWELEMENTSPROC pglDrawElements;
+extern avpPFNGLENABLEPROC pglEnable;
+extern avpPFNGLFRONTFACEPROC pglFrontFace;
+extern avpPFNGLGENTEXTURESPROC pglGenTextures;
+extern avpPFNGLGETERRORPROC pglGetError;
+extern avpPFNGLGETFLOATVPROC pglGetFloatv;
+extern avpPFNGLGETINTEGERVPROC pglGetIntegerv;
+extern avpPFNGLGETSTRINGPROC pglGetString;
+extern avpPFNGLGETTEXPARAMETERFVPROC pglGetTexParameterfv;
+extern avpPFNGLHINTPROC pglHint;
+extern avpPFNGLPIXELSTOREIPROC pglPixelStorei;
+extern avpPFNGLPOLYGONOFFSETPROC pglPolygonOffset;
+extern avpPFNGLREADPIXELSPROC pglReadPixels;
+extern avpPFNGLTEXIMAGE2DPROC pglTexImage2D;
+extern avpPFNGLTEXPARAMETERFPROC pglTexParameterf;
+extern avpPFNGLTEXPARAMETERIPROC pglTexParameteri;
+extern avpPFNGLTEXSUBIMAGE2DPROC pglTexSubImage2D;
+extern avpPFNGLVIEWPORTPROC pglViewport;
+
+// OpenGL 2.1 / OpenGL ES 2.0
+typedef void (APIENTRY *avpPFNGLATTACHSHADERPROC)(GLuint, GLuint);
+typedef void (APIENTRY *avpPFNGLBINDATTRIBLOCATIONPROC)(GLuint, GLuint, const GLchar*);
+typedef void (APIENTRY *avpPFNGLBINDBUFFERPROC)(GLenum, GLuint);
+typedef void (APIENTRY *avpPFNGLBUFFERDATAPROC)(GLenum, GLsizeiptr, const GLvoid*, GLenum);
+typedef void (APIENTRY *avpPFNGLBUFFERSUBDATAPROC)(GLenum, GLintptr, GLsizeiptr, const GLvoid*);
+typedef GLuint (APIENTRY *avpPFNGLCREATEPROGRAMPROC)(void);
+typedef GLuint (APIENTRY *avpPFNGLCREATESHADERPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLCOMPILESHADERPROC)(GLuint);
+typedef void (APIENTRY *avpPFNGLDELETEBUFFERSPROC)(GLsizei, const GLuint*);
+typedef void (APIENTRY *avpPFNGLDELETEPROGRAMPROC)(GLuint);
+typedef void (APIENTRY *avpPFNGLDELETESHADERPROC)(GLuint);
+typedef void (APIENTRY *avpPFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint);
+typedef void (APIENTRY *avpPFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint);
+typedef void (APIENTRY *avpPFNGLGENBUFFERSPROC)(GLsizei, GLuint*);
+typedef int (APIENTRY *avpPFNGLGETATTRIBLOCATIONPROC)(GLuint, const GLchar*);
+typedef void (APIENTRY *avpPFNGLGETPROGRAMINFOLOGPROC)(GLuint, GLsizei, GLsizei*, GLchar*);
+typedef void (APIENTRY *avpPFNGLGETPROGRAMIVPROC)(GLuint, GLenum, GLint*);
+typedef void (APIENTRY *avpPFNGLGETSHADERINFOLOGPROC)(GLuint, GLsizei, GLsizei*, GLchar*);
+typedef void (APIENTRY *avpPFNGLGETSHADERIVPROC)(GLuint, GLenum, GLint*);
+typedef int (APIENTRY *avpPFNGLGETUNIFORMLOCATIONPROC)(GLuint, const GLchar*);
+typedef void (APIENTRY *avpPFNGLLINKPROGRAMPROC)(GLuint);
+typedef void (APIENTRY *avpPFNGLSHADERSOURCEPROC)(GLuint, GLsizei, const GLchar* const*, const GLint*);
+typedef void (APIENTRY *avpPFNGLVALIDATEPROGRAMPROC)(GLuint);
+typedef void (APIENTRY *avpPFNGLVERTEXATTRIBPOINTERPROC)(GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid*);
+typedef void (APIENTRY *avpPFNGLUNIFORM1IPROC)(GLint, GLint);
+typedef void (APIENTRY *avpPFNGLUNIFORMMATRIX4FVPROC)(GLint, GLsizei, GLboolean, const GLfloat*);
+typedef void (APIENTRY *avpPFNGLUSEPROGRAMPROC)(GLuint);
+
+extern avpPFNGLATTACHSHADERPROC pglAttachShader;
+extern avpPFNGLBINDATTRIBLOCATIONPROC pglBindAttribLocation;
+extern avpPFNGLBINDBUFFERPROC pglBindBuffer;
+extern avpPFNGLBUFFERDATAPROC pglBufferData;
+extern avpPFNGLBUFFERSUBDATAPROC pglBufferSubData;
+extern avpPFNGLCREATEPROGRAMPROC pglCreateProgram;
+extern avpPFNGLCREATESHADERPROC pglCreateShader;
+extern avpPFNGLCOMPILESHADERPROC pglCompileShader;
+extern avpPFNGLDELETEBUFFERSPROC pglDeleteBuffers;
+extern avpPFNGLDELETEPROGRAMPROC pglDeleteProgram;
+extern avpPFNGLDELETESHADERPROC pglDeleteShader;
+extern avpPFNGLDISABLEVERTEXATTRIBARRAYPROC pglDisableVertexAttribArray;
+extern avpPFNGLENABLEVERTEXATTRIBARRAYPROC pglEnableVertexAttribArray;
+extern avpPFNGLGENBUFFERSPROC pglGenBuffers;
+extern avpPFNGLGETATTRIBLOCATIONPROC pglGetAttribLocation;
+extern avpPFNGLGETPROGRAMINFOLOGPROC pglGetProgramInfoLog;
+extern avpPFNGLGETPROGRAMIVPROC pglGetProgramiv;
+extern avpPFNGLGETSHADERINFOLOGPROC pglGetShaderInfoLog;
+extern avpPFNGLGETSHADERIVPROC pglGetShaderiv;
+extern avpPFNGLGETUNIFORMLOCATIONPROC pglGetUniformLocation;
+extern avpPFNGLLINKPROGRAMPROC pglLinkProgram;
+extern avpPFNGLSHADERSOURCEPROC pglShaderSource;
+extern avpPFNGLVALIDATEPROGRAMPROC pglValidateProgram;
+extern avpPFNGLVERTEXATTRIBPOINTERPROC pglVertexAttribPointer;
+extern avpPFNGLUNIFORM1IPROC pglUniform1i;
+extern avpPFNGLUNIFORMMATRIX4FVPROC pglUniformMatrix4fv;
+extern avpPFNGLUSEPROGRAMPROC pglUseProgram;
+
+// GL_EXT_framebuffer_object / GL_ARB_framebuffer_object / OpenGL ES 2.0
+typedef void (APIENTRY *avpPFNGLBINDFRAMEBUFFERPROC)(GLenum, GLuint);
+typedef void (APIENTRY *avpPFNGLBINDRENDERBUFFERPROC)(GLenum, GLuint);
+typedef GLenum (APIENTRY *avpPFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLDELETEFRAMEBUFFERSPROC)(GLsizei, const GLuint*);
+typedef void (APIENTRY *avpPFNGLDELETERENDERBUFFERSPROC)(GLsizei, const GLuint*);
+typedef void (APIENTRY *avpPFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum, GLenum, GLenum, GLuint);
+typedef void (APIENTRY *avpPFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum, GLenum, GLenum, GLuint, GLint);
+typedef void (APIENTRY *avpPFNGLGENERATEMIPMAPPROC)(GLenum);
+typedef void (APIENTRY *avpPFNGLGENFRAMEBUFFERSPROC)(GLsizei, GLuint*);
+typedef void (APIENTRY *avpPFNGLGENRENDERBUFFERSPROC)(GLsizei, GLuint*);
+typedef void (APIENTRY *avpPFNGLRENDERBUFFERSTORAGEPROC)(GLenum, GLenum, GLsizei, GLsizei);
+
+extern avpPFNGLBINDFRAMEBUFFERPROC pglBindFramebuffer;
+extern avpPFNGLBINDRENDERBUFFERPROC pglBindRenderbuffer;
+extern avpPFNGLCHECKFRAMEBUFFERSTATUSPROC pglCheckFramebufferStatus;
+extern avpPFNGLDELETEFRAMEBUFFERSPROC pglDeleteFramebuffers;
+extern avpPFNGLDELETERENDERBUFFERSPROC pglDeleteRenderbuffers;
+extern avpPFNGLFRAMEBUFFERRENDERBUFFERPROC pglFramebufferRenderbuffer;
+extern avpPFNGLFRAMEBUFFERTEXTURE2DPROC pglFramebufferTexture2D;
+extern avpPFNGLGENERATEMIPMAPPROC pglGenerateMipmap;
+extern avpPFNGLGENFRAMEBUFFERSPROC pglGenFramebuffers;
+extern avpPFNGLGENRENDERBUFFERSPROC pglGenRenderbuffers;
+extern avpPFNGLRENDERBUFFERSTORAGEPROC pglRenderbufferStorage;
-extern PFNGLALPHAFUNCPROC pglAlphaFunc;
-extern PFNGLBINDTEXTUREPROC pglBindTexture;
-extern PFNGLBLENDFUNCPROC pglBlendFunc;
-extern PFNGLCLEARPROC pglClear;
-extern PFNGLCLEARCOLORPROC pglClearColor;
-extern PFNGLCOLOR4FPROC pglColor4f;
-extern PFNGLCOLORPOINTERPROC pglColorPointer;
-extern PFNGLCULLFACEPROC pglCullFace;
-extern PFNGLDELETETEXTURESPROC pglDeleteTextures;
-extern PFNGLDEPTHFUNCPROC pglDepthFunc;
-extern PFNGLDEPTHMASKPROC pglDepthMask;
-extern PFNGLDEPTHRANGEPROC pglDepthRange;
-extern PFNGLDISABLEPROC pglDisable;
-extern PFNGLDISABLECLIENTSTATEPROC pglDisableClientState;
-extern PFNGLDRAWELEMENTSPROC pglDrawElements;
-extern PFNGLENABLEPROC pglEnable;
-extern PFNGLENABLECLIENTSTATEPROC pglEnableClientState;
-extern PFNGLFRONTFACEPROC pglFrontFace;
-extern PFNGLGENTEXTURESPROC pglGenTextures;
-extern PFNGLGETERRORPROC pglGetError;
-extern PFNGLGETFLOATVPROC pglGetFloatv;
-extern PFNGLGETINTEGERVPROC pglGetIntegerv;
-extern PFNGLGETSTRINGPROC pglGetString;
-extern PFNGLGETTEXPARAMETERFVPROC pglGetTexParameterfv;
-extern PFNGLHINTPROC pglHint;
-extern PFNGLPIXELSTOREIPROC pglPixelStorei;
-extern PFNGLPOLYGONOFFSETPROC pglPolygonOffset;
-extern PFNGLREADPIXELSPROC pglReadPixels;
-extern PFNGLSHADEMODELPROC pglShadeModel;
-extern PFNGLTEXCOORDPOINTERPROC pglTexCoordPointer;
-extern PFNGLTEXENVFPROC pglTexEnvf;
-extern PFNGLTEXENVFVPROC pglTexEnvfv;
-extern PFNGLTEXENVIPROC pglTexEnvi;
-extern PFNGLTEXIMAGE2DPROC pglTexImage2D;
-extern PFNGLTEXPARAMETERFPROC pglTexParameterf;
-extern PFNGLTEXPARAMETERIPROC pglTexParameteri;
-extern PFNGLTEXSUBIMAGE2DPROC pglTexSubImage2D;
-extern PFNGLVERTEXPOINTERPROC pglVertexPointer;
-extern PFNGLVIEWPORTPROC pglViewport;
extern int ogl_have_multisample_filter_hint;
extern int ogl_have_texture_filter_anisotropic;
+extern int ogl_have_framebuffer_object;
extern int ogl_use_multisample_filter_hint;
extern int ogl_use_texture_filter_anisotropic;
+extern int ogl_use_framebuffer_object;
extern void load_ogl_functions(int mode);