/src/GraphicsExt.h
C Header | 213 lines | 125 code | 5 blank | 83 comment | 0 complexity | ac36be80afda3d97893d8ba50998504c MD5 | raw file
- /**
- * This file is included multiple times with various macros defined to do various
- * things to load the various OpenGL extensions.
- *
- * Use Graphics::loadAvailableExtensions to fill these in.
- * Items that are NULL after that are unavailable.
- *
- * Therefore, you can, at runtime, check if a given extension is available with this simple idiom:
- * if (glFooFunc) {
- * //do the FooFunc version
- * glFooFunc(a, b, c);
- * } else {
- * //do the fallback version
- * }
- *
- * Regex for converting from the glext.h protos:
- * s/GLAPI .* APIENTRY (gl\w+)[^;]+;/GL_EXT_PROC(PFN$1PROC, $1);/
- * - then add back the camel case
- */
- #include <GL/glext.h>
- //Vertex buffer fu
- GL_EXT_PROC(PFNGLBINDBUFFERPROC, glBindBuffer);
- GL_EXT_PROC(PFNGLDELETEBUFFERSPROC, glDeleteBuffers);
- GL_EXT_PROC(PFNGLGENBUFFERSPROC, glGenBuffers);
- GL_EXT_PROC(PFNGLISBUFFERPROC, glIsBuffer);
- GL_EXT_PROC(PFNGLBUFFERDATAPROC, glBufferData);
- GL_EXT_PROC(PFNGLBUFFERSUBDATAPROC, glBufferSubData);
- GL_EXT_PROC(PFNGLGETBUFFERSUBDATAPROC, glGetBufferSubData);
- GL_EXT_PROC(PFNGLMAPBUFFERPROC, glMapBuffer);
- GL_EXT_PROC(PFNGLUNMAPBUFFERPROC, glUnmapBuffer);
- GL_EXT_PROC(PFNGLGETBUFFERPARAMETERIVPROC, glGetBufferParameteriv);
- GL_EXT_PROC(PFNGLGETBUFFERPOINTERVPROC, glGetBufferPointerv);
- //Shader fu
- GL_EXT_PROC(PFNGLBLENDEQUATIONSEPARATEPROC, glBlendEquationSeparate);
- GL_EXT_PROC(PFNGLDRAWBUFFERSPROC, glDrawBuffers);
- GL_EXT_PROC(PFNGLSTENCILOPSEPARATEPROC, glStencilOpSeparate);
- GL_EXT_PROC(PFNGLSTENCILFUNCSEPARATEPROC, glStencilFuncSeparate);
- GL_EXT_PROC(PFNGLSTENCILMASKSEPARATEPROC, glStencilMaskSeparate);
- GL_EXT_PROC(PFNGLATTACHSHADERPROC, glAttachShader);
- GL_EXT_PROC(PFNGLBINDATTRIBLOCATIONPROC, glBindAttribLocation);
- GL_EXT_PROC(PFNGLCOMPILESHADERPROC, glCompileShader);
- GL_EXT_PROC(PFNGLCREATEPROGRAMPROC, glCreateProgram);
- GL_EXT_PROC(PFNGLCREATESHADERPROC, glCreateShader);
- GL_EXT_PROC(PFNGLDELETEPROGRAMPROC, glDeleteProgram);
- GL_EXT_PROC(PFNGLDELETESHADERPROC, glDeleteShader);
- GL_EXT_PROC(PFNGLDETACHSHADERPROC, glDetachShader);
- GL_EXT_PROC(PFNGLDISABLEVERTEXATTRIBARRAYPROC, glDisableVertexAttribArray);
- GL_EXT_PROC(PFNGLENABLEVERTEXATTRIBARRAYPROC, glEnableVertexAttribArray);
- GL_EXT_PROC(PFNGLGETACTIVEATTRIBPROC, glGetActiveAttrib);
- GL_EXT_PROC(PFNGLGETACTIVEUNIFORMPROC, glGetActiveUniform);
- GL_EXT_PROC(PFNGLGETATTACHEDSHADERSPROC, glGetAttachedShaders);
- GL_EXT_PROC(PFNGLGETATTRIBLOCATIONPROC, glGetAttribLocation);
- GL_EXT_PROC(PFNGLGETPROGRAMIVPROC, glGetProgramiv);
- GL_EXT_PROC(PFNGLGETPROGRAMINFOLOGPROC, glGetProgramInfoLog);
- GL_EXT_PROC(PFNGLGETSHADERIVPROC, glGetShaderiv);
- GL_EXT_PROC(PFNGLGETSHADERINFOLOGPROC, glGetShaderInfoLog);
- GL_EXT_PROC(PFNGLGETSHADERSOURCEPROC, glGetShaderSource);
- GL_EXT_PROC(PFNGLGETUNIFORMLOCATIONPROC, glGetUniformLocation);
- GL_EXT_PROC(PFNGLGETUNIFORMFVPROC, glGetUniformfv);
- GL_EXT_PROC(PFNGLGETUNIFORMIVPROC, glGetUniformiv);
- GL_EXT_PROC(PFNGLGETVERTEXATTRIBDVPROC, glGetVertexAttribdv);
- GL_EXT_PROC(PFNGLGETVERTEXATTRIBFVPROC, glGetVertexAttribfv);
- GL_EXT_PROC(PFNGLGETVERTEXATTRIBIVPROC, glGetVertexAttribiv);
- GL_EXT_PROC(PFNGLGETVERTEXATTRIBPOINTERVPROC, glGetVertexAttribPointerv);
- GL_EXT_PROC(PFNGLISPROGRAMPROC, glIsProgram);
- GL_EXT_PROC(PFNGLISSHADERPROC, glIsShader);
- GL_EXT_PROC(PFNGLLINKPROGRAMPROC, glLinkProgram);
- GL_EXT_PROC(PFNGLSHADERSOURCEPROC, glShaderSource);
- GL_EXT_PROC(PFNGLUSEPROGRAMPROC, glUseProgram);
- GL_EXT_PROC(PFNGLUNIFORM1FPROC, glUniform1f);
- GL_EXT_PROC(PFNGLUNIFORM2FPROC, glUniform2f);
- GL_EXT_PROC(PFNGLUNIFORM3FPROC, glUniform3f);
- GL_EXT_PROC(PFNGLUNIFORM4FPROC, glUniform4f);
- GL_EXT_PROC(PFNGLUNIFORM1IPROC, glUniform1i);
- GL_EXT_PROC(PFNGLUNIFORM2IPROC, glUniform2i);
- GL_EXT_PROC(PFNGLUNIFORM3IPROC, glUniform3i);
- GL_EXT_PROC(PFNGLUNIFORM4IPROC, glUniform4i);
- GL_EXT_PROC(PFNGLUNIFORM1FVPROC, glUniform1fv);
- GL_EXT_PROC(PFNGLUNIFORM2FVPROC, glUniform2fv);
- GL_EXT_PROC(PFNGLUNIFORM3FVPROC, glUniform3fv);
- GL_EXT_PROC(PFNGLUNIFORM4FVPROC, glUniform4fv);
- GL_EXT_PROC(PFNGLUNIFORM1IVPROC, glUniform1iv);
- GL_EXT_PROC(PFNGLUNIFORM2IVPROC, glUniform2iv);
- GL_EXT_PROC(PFNGLUNIFORM3IVPROC, glUniform3iv);
- GL_EXT_PROC(PFNGLUNIFORM4IVPROC, glUniform4iv);
- GL_EXT_PROC(PFNGLUNIFORMMATRIX2FVPROC, glUniformMatrix2fv);
- GL_EXT_PROC(PFNGLUNIFORMMATRIX3FVPROC, glUniformMatrix3fv);
- GL_EXT_PROC(PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv);
- GL_EXT_PROC(PFNGLVALIDATEPROGRAMPROC, glValidateProgram);
- GL_EXT_PROC(PFNGLVERTEXATTRIB1DPROC, glVertexAttrib1d);
- GL_EXT_PROC(PFNGLVERTEXATTRIB1DVPROC, glVertexAttrib1dv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB1FPROC, glVertexAttrib1f);
- GL_EXT_PROC(PFNGLVERTEXATTRIB1FVPROC, glVertexAttrib1fv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB1SPROC, glVertexAttrib1s);
- GL_EXT_PROC(PFNGLVERTEXATTRIB1SVPROC, glVertexAttrib1sv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB2DPROC, glVertexAttrib2d);
- GL_EXT_PROC(PFNGLVERTEXATTRIB2DVPROC, glVertexAttrib2dv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB2FPROC, glVertexAttrib2f);
- GL_EXT_PROC(PFNGLVERTEXATTRIB2FVPROC, glVertexAttrib2fv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB2SPROC, glVertexAttrib2s);
- GL_EXT_PROC(PFNGLVERTEXATTRIB2SVPROC, glVertexAttrib2sv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB3DPROC, glVertexAttrib3d);
- GL_EXT_PROC(PFNGLVERTEXATTRIB3DVPROC, glVertexAttrib3dv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB3FPROC, glVertexAttrib3f);
- GL_EXT_PROC(PFNGLVERTEXATTRIB3FVPROC, glVertexAttrib3fv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB3SPROC, glVertexAttrib3s);
- GL_EXT_PROC(PFNGLVERTEXATTRIB3SVPROC, glVertexAttrib3sv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4NBVPROC, glVertexAttrib4Nbv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4NIVPROC, glVertexAttrib4Niv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4NSVPROC, glVertexAttrib4Nsv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4NUBPROC, glVertexAttrib4Nub);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4NUBVPROC, glVertexAttrib4Nubv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4NUIVPROC, glVertexAttrib4Nuiv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4NUSVPROC, glVertexAttrib4Nusv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4BVPROC, glVertexAttrib4bv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4DPROC, glVertexAttrib4d);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4DVPROC, glVertexAttrib4dv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4FPROC, glVertexAttrib4f);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4FVPROC, glVertexAttrib4fv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4IVPROC, glVertexAttrib4iv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4SPROC, glVertexAttrib4s);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4SVPROC, glVertexAttrib4sv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4UBVPROC, glVertexAttrib4ubv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4UIVPROC, glVertexAttrib4uiv);
- GL_EXT_PROC(PFNGLVERTEXATTRIB4USVPROC, glVertexAttrib4usv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBPOINTERPROC, glVertexAttribPointer);
- //Framebuffers
- GL_EXT_PROC(PFNGLISRENDERBUFFERPROC, glIsRenderbuffer);
- GL_EXT_PROC(PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer);
- GL_EXT_PROC(PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers);
- GL_EXT_PROC(PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers);
- GL_EXT_PROC(PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage);
- GL_EXT_PROC(PFNGLGETRENDERBUFFERPARAMETERIVPROC, glGetRenderbufferParameteriv);
- GL_EXT_PROC(PFNGLISFRAMEBUFFERPROC, glIsFramebuffer);
- GL_EXT_PROC(PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer);
- GL_EXT_PROC(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers);
- GL_EXT_PROC(PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers);
- GL_EXT_PROC(PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus);
- GL_EXT_PROC(PFNGLFRAMEBUFFERTEXTURE1DPROC, glFramebufferTexture1D);
- GL_EXT_PROC(PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D);
- GL_EXT_PROC(PFNGLFRAMEBUFFERTEXTURE3DPROC, glFramebufferTexture3D);
- GL_EXT_PROC(PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer);
- GL_EXT_PROC(PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC, glGetFramebufferAttachmentParameteriv);
- GL_EXT_PROC(PFNGLGENERATEMIPMAPPROC, glGenerateMipmap);
- GL_EXT_PROC(PFNGLBLITFRAMEBUFFERPROC, glBlitFramebuffer);
- GL_EXT_PROC(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample);
- GL_EXT_PROC(PFNGLFRAMEBUFFERTEXTURELAYERPROC, glFramebufferTextureLayer);
- //GL 3
- /*
- GL_EXT_PROC(PFNGLCOLORMASKIPROC, glColorMaski);
- GL_EXT_PROC(PFNGLGETBOOLEANI_VPROC, glGetBooleani_v);
- GL_EXT_PROC(PFNGLGETINTEGERI_VPROC, glGetIntegeri_v);
- GL_EXT_PROC(PFNGLENABLEIPROC, glEnablei);
- GL_EXT_PROC(PFNGLDISABLEIPROC, glDisablei);
- GL_EXT_PROC(PFNGLISENABLEDIPROC, glIsEnabledi);
- GL_EXT_PROC(PFNGLBEGINTRANSFORMFEEDBACKPROC, glBeginTransformFeedback);
- GL_EXT_PROC(PFNGLENDTRANSFORMFEEDBACKPROC, glEndTransformFeedback);
- GL_EXT_PROC(PFNGLBINDBUFFERRANGEPROC, glBindBufferRange);
- GL_EXT_PROC(PFNGLBINDBUFFERBASEPROC, glBindBufferBase);
- GL_EXT_PROC(PFNGLTRANSFORMFEEDBACKVARYINGSPROC, glTransformFeedbackVaryings);
- GL_EXT_PROC(PFNGLGETTRANSFORMFEEDBACKVARYINGPROC, glGetTransformFeedbackVarying);
- GL_EXT_PROC(PFNGLCLAMPCOLORPROC, glClampColor);
- GL_EXT_PROC(PFNGLBEGINCONDITIONALRENDERPROC, glBeginConditionalRender);
- GL_EXT_PROC(PFNGLENDCONDITIONALRENDERPROC, glEndConditionalRender);
- GL_EXT_PROC(PFNGLVERTEXATTRIBIPOINTERPROC, glVertexAttribIPointer);
- GL_EXT_PROC(PFNGLGETVERTEXATTRIBIIVPROC, glGetVertexAttribIiv);
- GL_EXT_PROC(PFNGLGETVERTEXATTRIBIUIVPROC, glGetVertexAttribIuiv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI1IPROC, glVertexAttribI1i);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI2IPROC, glVertexAttribI2i);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI3IPROC, glVertexAttribI3i);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI4IPROC, glVertexAttribI4i);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI1UIPROC, glVertexAttribI1ui);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI2UIPROC, glVertexAttribI2ui);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI3UIPROC, glVertexAttribI3ui);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI4UIPROC, glVertexAttribI4ui);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI1IVPROC, glVertexAttribI1iv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI2IVPROC, glVertexAttribI2iv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI3IVPROC, glVertexAttribI3iv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI4IVPROC, glVertexAttribI4iv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI1UIVPROC, glVertexAttribI1uiv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI2UIVPROC, glVertexAttribI2uiv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI3UIVPROC, glVertexAttribI3uiv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI4UIVPROC, glVertexAttribI4uiv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI4BVPROC, glVertexAttribI4bv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI4SVPROC, glVertexAttribI4sv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI4UBVPROC, glVertexAttribI4ubv);
- GL_EXT_PROC(PFNGLVERTEXATTRIBI4USVPROC, glVertexAttribI4usv);
- GL_EXT_PROC(PFNGLGETUNIFORMUIVPROC, glGetUniformuiv);
- GL_EXT_PROC(PFNGLBINDFRAGDATALOCATIONPROC, glBindFragDataLocation);
- GL_EXT_PROC(PFNGLGETFRAGDATALOCATIONPROC, glGetFragDataLocation);
- GL_EXT_PROC(PFNGLUNIFORM1UIPROC, glUniform1ui);
- GL_EXT_PROC(PFNGLUNIFORM2UIPROC, glUniform2ui);
- GL_EXT_PROC(PFNGLUNIFORM3UIPROC, glUniform3ui);
- GL_EXT_PROC(PFNGLUNIFORM4UIPROC, glUniform4ui);
- GL_EXT_PROC(PFNGLUNIFORM1UIVPROC, glUniform1uiv);
- GL_EXT_PROC(PFNGLUNIFORM2UIVPROC, glUniform2uiv);
- GL_EXT_PROC(PFNGLUNIFORM3UIVPROC, glUniform3uiv);
- GL_EXT_PROC(PFNGLUNIFORM4UIVPROC, glUniform4uiv);
- GL_EXT_PROC(PFNGLTEXPARAMETERIIVPROC, glTexParameterIiv);
- GL_EXT_PROC(PFNGLTEXPARAMETERIUIVPROC, glTexParameterIuiv);
- GL_EXT_PROC(PFNGLGETTEXPARAMETERIIVPROC, glGetTexParameterIiv);
- GL_EXT_PROC(PFNGLGETTEXPARAMETERIUIVPROC, glGetTexParameterIuiv);
- GL_EXT_PROC(PFNGLCLEARBUFFERIVPROC, glClearBufferiv);
- GL_EXT_PROC(PFNGLCLEARBUFFERUIVPROC, glClearBufferuiv);
- GL_EXT_PROC(PFNGLCLEARBUFFERFVPROC, glClearBufferfv);
- GL_EXT_PROC(PFNGLCLEARBUFFERFIPROC, glClearBufferfi);
- GL_EXT_PROC(PFNGLGETSTRINGIPROC, glGetStringi);
- */