bool initExtensions() { const char* extensions = (const char*)glGetString(GL_EXTENSIONS); CCLOG(extensions); if(!LOAD_EXTENSION(PFNGLGENERATEMIPMAPOESPROC, glGenerateMipmapOES)) NULL_EXTENSION(glGenerateMipmapOES); if(!LOAD_EXTENSION(PFNGLGENFRAMEBUFFERSOESPROC, glGenFramebuffersOES)) NULL_EXTENSION(glGenFramebuffersOES); if(!LOAD_EXTENSION(PFNGLBINDFRAMEBUFFEROESPROC, glBindFramebufferOES)) NULL_EXTENSION(glBindFramebufferOES); if(!LOAD_EXTENSION(PFNGLFRAMEBUFFERTEXTURE2DOESPROC, glFramebufferTexture2DOES)) NULL_EXTENSION(glFramebufferTexture2DOES); if(!LOAD_EXTENSION(PFNGLDELETEFRAMEBUFFERSOESPROC, glDeleteFramebuffersOES)) NULL_EXTENSION(glDeleteFramebuffersOES); if(!LOAD_EXTENSION(PFNGLCHECKFRAMEBUFFERSTATUSOESPROC, glCheckFramebufferStatusOES)) NULL_EXTENSION(glCheckFramebufferStatusOES); return true; }
void LoadOpenGLExt() { #define LOAD_EXTENSION(funcType, funcName) (funcName = (funcType) wglGetProcAddress( #funcName )) g_GLExtensions = (char *) glGetString(GL_EXTENSIONS); LOAD_EXTENSION(PFNGLDRAWRANGEELEMENTSEXTPROC, glDrawRangeElements); // GL_ARB_multitexture LOAD_EXTENSION(PFNGLACTIVETEXTUREARBPROC, glActiveTextureARB); LOAD_EXTENSION(PFNGLCLIENTACTIVETEXTUREARBPROC, glClientActiveTextureARB); LOAD_EXTENSION(PFNGLMULTITEXCOORD1FARBPROC, glMultiTexCoord1fARB); LOAD_EXTENSION(PFNGLMULTITEXCOORD1FVARBPROC, glMultiTexCoord1fvARB); LOAD_EXTENSION(PFNGLMULTITEXCOORD2FARBPROC, glMultiTexCoord2fARB); LOAD_EXTENSION(PFNGLMULTITEXCOORD2FVARBPROC, glMultiTexCoord2fvARB); LOAD_EXTENSION(PFNGLMULTITEXCOORD3FARBPROC, glMultiTexCoord3fARB); LOAD_EXTENSION(PFNGLMULTITEXCOORD3FVARBPROC, glMultiTexCoord3fvARB); LOAD_EXTENSION(PFNGLMULTITEXCOORD4FARBPROC, glMultiTexCoord4fARB); LOAD_EXTENSION(PFNGLMULTITEXCOORD4FVARBPROC, glMultiTexCoord4fvARB); // GL_ARB_texture_compression LOAD_EXTENSION(PFNGLCOMPRESSEDTEXIMAGE1DARBPROC, glCompressedTexImage1DARB); LOAD_EXTENSION(PFNGLCOMPRESSEDTEXIMAGE2DARBPROC, glCompressedTexImage2DARB); LOAD_EXTENSION(PFNGLCOMPRESSEDTEXIMAGE3DARBPROC, glCompressedTexImage3DARB); LOAD_EXTENSION(PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC, glCompressedTexSubImage1DARB); LOAD_EXTENSION(PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC, glCompressedTexSubImage2DARB); LOAD_EXTENSION(PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC, glCompressedTexSubImage3DARB); LOAD_EXTENSION(PFNGLGETCOMPRESSEDTEXIMAGEARBPROC, glGetCompressedTexImageARB); // GL_ARB_vertex_buffer_object LOAD_EXTENSION(PFNGLBINDBUFFERARBPROC, glBindBufferARB); LOAD_EXTENSION(PFNGLDELETEBUFFERSARBPROC, glDeleteBuffersARB); LOAD_EXTENSION(PFNGLGENBUFFERSARBPROC, glGenBuffersARB); LOAD_EXTENSION(PFNGLISBUFFERARBPROC, glIsBufferARB); LOAD_EXTENSION(PFNGLBUFFERDATAARBPROC, glBufferDataARB); LOAD_EXTENSION(PFNGLBUFFERSUBDATAARBPROC, glBufferSubDataARB); LOAD_EXTENSION(PFNGLGETBUFFERSUBDATAARBPROC, glGetBufferSubDataARB); LOAD_EXTENSION(PFNGLMAPBUFFERARBPROC, glMapBufferARB); LOAD_EXTENSION(PFNGLUNMAPBUFFERARBPROC, glUnmapBufferARB); LOAD_EXTENSION(PFNGLGETBUFFERPARAMETERIVARBPROC, glGetBufferParameterivARB); LOAD_EXTENSION(PFNGLGETBUFFERPOINTERVARBPROC, glGetBufferPointervARB); // WGL_ARB_make_current_read LOAD_EXTENSION(PFNWGLMAKECONTEXTCURRENTARBPROC, wglMakeContextCurrentARB); LOAD_EXTENSION(PFNWGLGETCURRENTREADDCARBPROC, wglGetCurrentReadDCARB); // WGL_ARB_pixel_format LOAD_EXTENSION(PFNWGLGETPIXELFORMATATTRIBIVARBPROC, wglGetPixelFormatAttribivARB); LOAD_EXTENSION(PFNWGLGETPIXELFORMATATTRIBFVARBPROC, wglGetPixelFormatAttribfvARB); LOAD_EXTENSION(PFNWGLCHOOSEPIXELFORMATARBPROC, wglChoosePixelFormatARB); // WGL_ARB_pbuffer LOAD_EXTENSION(PFNWGLCREATEPBUFFERARBPROC, wglCreatePbufferARB); LOAD_EXTENSION(PFNWGLDESTROYPBUFFERARBPROC, wglDestroyPbufferARB); LOAD_EXTENSION(PFNWGLGETPBUFFERDCARBPROC, wglGetPbufferDCARB); LOAD_EXTENSION(PFNWGLRELEASEPBUFFERDCARBPROC, wglReleasePbufferDCARB); LOAD_EXTENSION(PFNWGLQUERYPBUFFERARBPROC, wglQueryPbufferARB); // WGL_ARB_render_texture LOAD_EXTENSION(PFNWGLBINDTEXIMAGEARBPROC, wglBindTexImageARB); LOAD_EXTENSION(PFNWGLRELEASETEXIMAGEARBPROC, wglReleaseTexImageARB); LOAD_EXTENSION(PFNWGLSETPBUFFERATTRIBARBPROC, wglSetPbufferAttribARB); // ARB_point_sprite LOAD_EXTENSION(PFNGLPOINTPARAMETERFARBPROC, glPointParameterfARB); LOAD_EXTENSION(PFNGLPOINTPARAMETERFVARBPROC, glPointParameterfvARB); /* =============================================================================== SHADER =============================================================================== */ LOAD_EXTENSION(PFNGLCREATEPROGRAMOBJECTARBPROC, glCreateProgramObjectARB); LOAD_EXTENSION(PFNGLCREATESHADEROBJECTARBPROC, glCreateShaderObjectARB); LOAD_EXTENSION(PFNGLDELETEOBJECTARBPROC, glDeleteObjectARB); LOAD_EXTENSION(PFNGLDETACHOBJECTARBPROC, glDetachObjectARB); LOAD_EXTENSION(PFNGLATTACHOBJECTARBPROC, glAttachObjectARB); LOAD_EXTENSION(PFNGLSHADERSOURCEARBPROC, glShaderSourceARB); LOAD_EXTENSION(PFNGLCOMPILESHADERARBPROC, glCompileShaderARB); LOAD_EXTENSION(PFNGLLINKPROGRAMARBPROC, glLinkProgramARB); LOAD_EXTENSION(PFNGLGETINFOLOGARBPROC, glGetInfoLogARB); LOAD_EXTENSION(PFNGLUSEPROGRAMOBJECTARBPROC, glUseProgramObjectARB); LOAD_EXTENSION(PFNGLGETOBJECTPARAMETERIVARBPROC, glGetObjectParameterivARB); LOAD_EXTENSION(PFNGLGETOBJECTPARAMETERFVARBPROC, glGetObjectParameterfvARB); LOAD_EXTENSION(PFNGLGETUNIFORMLOCATIONARBPROC, glGetUniformLocationARB); LOAD_EXTENSION(PFNGLGETATTRIBLOCATIONARBPROC, glGetAttribLocationARB); LOAD_EXTENSION(PFNGLBINDATTRIBLOCATIONARBPROC, glBindAttribLocationARB); LOAD_EXTENSION(PFNGLUNIFORM1FARBPROC, glUniform1fARB); LOAD_EXTENSION(PFNGLUNIFORM2FARBPROC, glUniform2fARB); LOAD_EXTENSION(PFNGLUNIFORM3FARBPROC, glUniform3fARB); LOAD_EXTENSION(PFNGLUNIFORM4FARBPROC, glUniform4fARB); LOAD_EXTENSION(PFNGLUNIFORM1IARBPROC, glUniform1iARB); LOAD_EXTENSION(PFNGLUNIFORM2IARBPROC, glUniform2iARB); LOAD_EXTENSION(PFNGLUNIFORM3IARBPROC, glUniform3iARB); LOAD_EXTENSION(PFNGLUNIFORM4IARBPROC, glUniform4iARB); LOAD_EXTENSION(PFNGLUNIFORM1FVARBPROC, glUniform1fvARB); LOAD_EXTENSION(PFNGLUNIFORM2FVARBPROC, glUniform2fvARB); LOAD_EXTENSION(PFNGLUNIFORM3FVARBPROC, glUniform3fvARB); LOAD_EXTENSION(PFNGLUNIFORM4FVARBPROC, glUniform4fvARB); LOAD_EXTENSION(PFNGLUNIFORM1IVARBPROC, glUniform1ivARB); LOAD_EXTENSION(PFNGLUNIFORM2IVARBPROC, glUniform2ivARB); LOAD_EXTENSION(PFNGLUNIFORM3IVARBPROC, glUniform3ivARB); LOAD_EXTENSION(PFNGLUNIFORM4IVARBPROC, glUniform4ivARB); LOAD_EXTENSION(PFNGLUNIFORMMATRIX2FVARBPROC, glUniformMatrix2fvARB); LOAD_EXTENSION(PFNGLUNIFORMMATRIX3FVARBPROC, glUniformMatrix3fvARB); LOAD_EXTENSION(PFNGLUNIFORMMATRIX4FVARBPROC, glUniformMatrix4fvARB); LOAD_EXTENSION(PFNGLVERTEXATTRIB4FVARBPROC, glVertexAttrib4fvARB); LOAD_EXTENSION(PFNGLVERTEXATTRIB3FVARBPROC, glVertexAttrib3fvARB); LOAD_EXTENSION(PFNGLVERTEXATTRIB2FVARBPROC, glVertexAttrib2fvARB); LOAD_EXTENSION(PFNGLVERTEXATTRIB1FVARBPROC, glVertexAttrib1fvARB); LOAD_EXTENSION(PFNGLVERTEXATTRIB4FARBPROC, glVertexAttrib4fARB); LOAD_EXTENSION(PFNGLVERTEXATTRIB3FARBPROC, glVertexAttrib3fARB); LOAD_EXTENSION(PFNGLVERTEXATTRIB2FARBPROC, glVertexAttrib2fARB); LOAD_EXTENSION(PFNGLVERTEXATTRIB1FARBPROC, glVertexAttrib1fARB); LOAD_EXTENSION(PFNGLVERTEXATTRIBPOINTERARBPROC, glVertexAttribPointerARB); LOAD_EXTENSION(PFNGLENABLEVERTEXATTRIBARRAYARBPROC, glEnableVertexAttribArrayARB); LOAD_EXTENSION(PFNGLDISABLEVERTEXATTRIBARRAYARBPROC, glDisableVertexAttribArrayARB); LOAD_EXTENSION(PFNGLISRENDERBUFFEREXTPROC, glIsRenderbufferEXT); LOAD_EXTENSION(PFNGLBINDRENDERBUFFEREXTPROC, glBindRenderbufferEXT); LOAD_EXTENSION(PFNGLDELETERENDERBUFFERSEXTPROC, glDeleteRenderbuffersEXT); LOAD_EXTENSION(PFNGLGENRENDERBUFFERSEXTPROC, glGenRenderbuffersEXT); LOAD_EXTENSION(PFNGLRENDERBUFFERSTORAGEEXTPROC, glRenderbufferStorageEXT); LOAD_EXTENSION(PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC, glGetRenderbufferParameterivEXT); LOAD_EXTENSION(PFNGLISFRAMEBUFFEREXTPROC, glIsFramebufferEXT); LOAD_EXTENSION(PFNGLBINDFRAMEBUFFEREXTPROC, glBindFramebufferEXT); LOAD_EXTENSION(PFNGLDELETEFRAMEBUFFERSEXTPROC, glDeleteFramebuffersEXT); LOAD_EXTENSION(PFNGLGENFRAMEBUFFERSEXTPROC, glGenFramebuffersEXT); LOAD_EXTENSION(PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC, glCheckFramebufferStatusEXT); LOAD_EXTENSION(PFNGLFRAMEBUFFERTEXTURE1DEXTPROC, glFramebufferTexture1DEXT); LOAD_EXTENSION(PFNGLFRAMEBUFFERTEXTURE2DEXTPROC, glFramebufferTexture2DEXT); LOAD_EXTENSION(PFNGLFRAMEBUFFERTEXTURE3DEXTPROC, glFramebufferTexture3DEXT); LOAD_EXTENSION(PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC, glFramebufferRenderbufferEXT); LOAD_EXTENSION(PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC, glGetFramebufferAttachmentParameterivEXT); LOAD_EXTENSION(PFNGLGENERATEMIPMAPEXTPROC, glGenerateMipmapEXT); #undef LOAD_EXTENSION }