From 5b4d4b37fa90330dbfed230f3b029907a4baeac1 Mon Sep 17 00:00:00 2001 From: bkaradzic Date: Sat, 7 Dec 2013 22:01:32 -0800 Subject: [PATCH] Fixed GL imports. --- src/glcontext_egl.cpp | 10 +- src/glcontext_glx.cpp | 8 +- src/glcontext_ppapi.cpp | 2 +- src/glcontext_wgl.cpp | 11 +- src/glimports.h | 305 +++++++++++++++++++++------------------- src/renderer_gl.cpp | 4 +- src/renderer_gl.h | 6 +- 7 files changed, 182 insertions(+), 164 deletions(-) diff --git a/src/glcontext_egl.cpp b/src/glcontext_egl.cpp index 9d03b2950..775f6d6af 100644 --- a/src/glcontext_egl.cpp +++ b/src/glcontext_egl.cpp @@ -12,7 +12,7 @@ namespace bgfx { -# define GL_IMPORT(_optional, _proto, _func) _proto _func +# define GL_IMPORT(_optional, _proto, _func, _import) _proto _func # include "glimports.h" # undef GL_IMPORT @@ -110,11 +110,11 @@ namespace bgfx void GlContext::import() { # if !BX_PLATFORM_EMSCRIPTEN -# define GL_IMPORT(_optional, _proto, _func) \ +# define GL_IMPORT(_optional, _proto, _func, _import) \ { \ - _func = (_proto)eglGetProcAddress(#_func); \ - BX_TRACE(#_func " 0x%08x", _func); \ - BGFX_FATAL(_optional || NULL != _func, Fatal::UnableToInitialize, "Failed to create OpenGLES context. eglGetProcAddress(\"%s\")", #_func); \ + _func = (_proto)eglGetProcAddress(#_import); \ + BX_TRACE(#_import " 0x%08x", _func); \ + BGFX_FATAL(_optional || NULL != _func, Fatal::UnableToInitialize, "Failed to create OpenGLES context. eglGetProcAddress(\"%s\")", #_import); \ } # include "glimports.h" # undef GL_IMPORT diff --git a/src/glcontext_glx.cpp b/src/glcontext_glx.cpp index be9e4e069..bac0b3e66 100644 --- a/src/glcontext_glx.cpp +++ b/src/glcontext_glx.cpp @@ -19,7 +19,7 @@ namespace bgfx PFNGLXSWAPINTERVALMESAPROC glXSwapIntervalMESA; PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI; -# define GL_IMPORT(_optional, _proto, _func) _proto _func +# define GL_IMPORT(_optional, _proto, _func, _import) _proto _func # include "glimports.h" # undef GL_IMPORT @@ -219,10 +219,10 @@ namespace bgfx void GlContext::import() { -# define GL_IMPORT(_optional, _proto, _func) \ +# define GL_IMPORT(_optional, _proto, _func, _import) \ { \ - _func = (_proto)glXGetProcAddress((const GLubyte*)#_func); \ - BGFX_FATAL(_optional || NULL != _func, Fatal::UnableToInitialize, "Failed to create OpenGL context. glXGetProcAddress %s", #_func); \ + _func = (_proto)glXGetProcAddress((const GLubyte*)#_import); \ + BGFX_FATAL(_optional || NULL != _func, Fatal::UnableToInitialize, "Failed to create OpenGL context. glXGetProcAddress %s", #_import); \ } # include "glimports.h" # undef GL_IMPORT diff --git a/src/glcontext_ppapi.cpp b/src/glcontext_ppapi.cpp index 80ad8087f..1707e69af 100644 --- a/src/glcontext_ppapi.cpp +++ b/src/glcontext_ppapi.cpp @@ -11,7 +11,7 @@ namespace bgfx { -# define GL_IMPORT(_optional, _proto, _func) _proto _func +# define GL_IMPORT(_optional, _proto, _func, _import) _proto _func # include "glimports.h" # undef GL_IMPORT diff --git a/src/glcontext_wgl.cpp b/src/glcontext_wgl.cpp index 83f00aeb9..3682eb017 100644 --- a/src/glcontext_wgl.cpp +++ b/src/glcontext_wgl.cpp @@ -21,7 +21,7 @@ namespace bgfx PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB; PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT; -# define GL_IMPORT(_optional, _proto, _func) _proto _func +# define GL_IMPORT(_optional, _proto, _func, _import) _proto _func # include "glimports.h" # undef GL_IMPORT @@ -273,14 +273,15 @@ namespace bgfx void GlContext::import() { -# define GL_IMPORT(_optional, _proto, _func) \ +# define GL_IMPORT(_optional, _proto, _func, _import) \ { \ - _func = (_proto)wglGetProcAddress(#_func); \ + BX_TRACE("%s", #_import); \ + _func = (_proto)wglGetProcAddress(#_import); \ if (_func == NULL) \ { \ - _func = (_proto)bx::dlsym(m_opengl32dll, #_func); \ + _func = (_proto)bx::dlsym(m_opengl32dll, #_import); \ } \ - BGFX_FATAL(_optional || NULL != _func, Fatal::UnableToInitialize, "Failed to create OpenGL context. wglGetProcAddress(\"%s\")", #_func); \ + BGFX_FATAL(_optional || NULL != _func, Fatal::UnableToInitialize, "Failed to create OpenGL context. wglGetProcAddress(\"%s\")", #_import); \ } # include "glimports.h" # undef GL_IMPORT diff --git a/src/glimports.h b/src/glimports.h index 9830438d6..57abf5b70 100644 --- a/src/glimports.h +++ b/src/glimports.h @@ -1,156 +1,176 @@ /* - * Copyright 2011-2013 Branimir Karadzic. All rights reserved. - * License: http://www.opensource.org/licenses/BSD-2-Clause - */ +* Copyright 2011-2013 Branimir Karadzic. All rights reserved. +* License: http://www.opensource.org/licenses/BSD-2-Clause +*/ #ifndef GL_IMPORT -# error GL_IMPORT(_optional, _proto, _func) must be defined! +# error GL_IMPORT(_optional, _proto, _func, _import) must be defined! #endif // GL_IMPORT +#define GL_IMPORT____(_optional, _proto, _func) GL_IMPORT(_optional, _proto, _func, _func) +#define GL_IMPORT_ARB(_optional, _proto, _func) GL_IMPORT(_optional, _proto, _func, _func ## ARB) +#define GL_IMPORT_EXT(_optional, _proto, _func) GL_IMPORT(_optional, _proto, _func, _func ## EXT) + #if BGFX_CONFIG_RENDERER_OPENGL // OpenGL 2.1 Reference Pages // http://www.opengl.org/sdk/docs/man/ #if BX_PLATFORM_WINDOWS -GL_IMPORT(false, PFNGLGETERRORPROC, glGetError); -GL_IMPORT(false, PFNGLREADPIXELSPROC, glReadPixels); -GL_IMPORT(false, PFNGLTEXIMAGE2DPROC, glTexImage2D); -GL_IMPORT(false, PFNGLTEXSUBIMAGE2DPROC, glTexSubImage2D); -GL_IMPORT(false, PFNGLPIXELSTOREIPROC, glPixelStorei); -GL_IMPORT(false, PFNGLTEXPARAMETERIPROC, glTexParameteri); -GL_IMPORT(false, PFNGLTEXPARAMETERIVPROC, glTexParameteriv); -GL_IMPORT(false, PFNGLTEXPARAMETERFPROC, glTexParameterf); -GL_IMPORT(false, PFNGLBINDTEXTUREPROC, glBindTexture); -GL_IMPORT(false, PFNGLGENTEXTURESPROC, glGenTextures); -GL_IMPORT(false, PFNGLDELETETEXTURESPROC, glDeleteTextures); -GL_IMPORT(false, PFNGLCOLORMASKPROC, glColorMask); -GL_IMPORT(false, PFNGLDEPTHFUNCPROC, glDepthFunc); -GL_IMPORT(false, PFNGLDISABLEPROC, glDisable); -GL_IMPORT(false, PFNGLVIEWPORTPROC, glViewport); -GL_IMPORT(false, PFNGLDRAWELEMENTSPROC, glDrawElements); -GL_IMPORT(false, PFNGLGETINTEGERVPROC, glGetIntegerv); -GL_IMPORT(false, PFNGLGETFLOATVPROC, glGetFloatv); -GL_IMPORT(false, PFNGLGETSTRINGPROC, glGetString); -GL_IMPORT(false, PFNGLDRAWARRAYSPROC, glDrawArrays); -GL_IMPORT(false, PFNGLBLENDFUNCPROC, glBlendFunc); -GL_IMPORT(false, PFNGLBLENDEQUATIONPROC, glBlendEquation); -GL_IMPORT(false, PFNGLPOINTSIZEPROC, glPointSize); -GL_IMPORT(false, PFNGLCULLFACEPROC, glCullFace); -GL_IMPORT(false, PFNGLCLEARPROC, glClear); -GL_IMPORT(false, PFNGLSCISSORPROC, glScissor); -GL_IMPORT(false, PFNGLENABLEPROC, glEnable); -GL_IMPORT(false, PFNGLCLEARSTENCILPROC, glClearStencil); -GL_IMPORT(false, PFNGLDEPTHMASKPROC, glDepthMask); -GL_IMPORT(false, PFNGLCLEARDEPTHPROC, glClearDepth); -GL_IMPORT(false, PFNGLCLEARCOLORPROC, glClearColor); -GL_IMPORT(false, PFNGLSTENCILFUNCPROC, glStencilFunc); -GL_IMPORT(false, PFNGLSTENCILMASKPROC, glStencilMask); -GL_IMPORT(false, PFNGLSTENCILOPPROC, glStencilOp); +GL_IMPORT____(false, PFNGLGETERRORPROC, glGetError); +GL_IMPORT____(false, PFNGLREADPIXELSPROC, glReadPixels); +GL_IMPORT____(false, PFNGLTEXIMAGE2DPROC, glTexImage2D); +GL_IMPORT____(false, PFNGLTEXSUBIMAGE2DPROC, glTexSubImage2D); +GL_IMPORT____(false, PFNGLPIXELSTOREIPROC, glPixelStorei); +GL_IMPORT____(false, PFNGLTEXPARAMETERIPROC, glTexParameteri); +GL_IMPORT____(false, PFNGLTEXPARAMETERIVPROC, glTexParameteriv); +GL_IMPORT____(false, PFNGLTEXPARAMETERFPROC, glTexParameterf); +GL_IMPORT____(false, PFNGLBINDTEXTUREPROC, glBindTexture); +GL_IMPORT____(false, PFNGLGENTEXTURESPROC, glGenTextures); +GL_IMPORT____(false, PFNGLDELETETEXTURESPROC, glDeleteTextures); +GL_IMPORT____(false, PFNGLCOLORMASKPROC, glColorMask); +GL_IMPORT____(false, PFNGLDEPTHFUNCPROC, glDepthFunc); +GL_IMPORT____(false, PFNGLDISABLEPROC, glDisable); +GL_IMPORT____(false, PFNGLVIEWPORTPROC, glViewport); +GL_IMPORT____(false, PFNGLDRAWELEMENTSPROC, glDrawElements); +GL_IMPORT____(false, PFNGLGETINTEGERVPROC, glGetIntegerv); +GL_IMPORT____(false, PFNGLGETFLOATVPROC, glGetFloatv); +GL_IMPORT____(false, PFNGLGETSTRINGPROC, glGetString); +GL_IMPORT____(false, PFNGLDRAWARRAYSPROC, glDrawArrays); +GL_IMPORT____(false, PFNGLBLENDFUNCPROC, glBlendFunc); +GL_IMPORT____(false, PFNGLBLENDEQUATIONPROC, glBlendEquation); +GL_IMPORT____(false, PFNGLPOINTSIZEPROC, glPointSize); +GL_IMPORT____(false, PFNGLCULLFACEPROC, glCullFace); +GL_IMPORT____(false, PFNGLCLEARPROC, glClear); +GL_IMPORT____(false, PFNGLSCISSORPROC, glScissor); +GL_IMPORT____(false, PFNGLENABLEPROC, glEnable); +GL_IMPORT____(false, PFNGLCLEARSTENCILPROC, glClearStencil); +GL_IMPORT____(false, PFNGLDEPTHMASKPROC, glDepthMask); +GL_IMPORT____(false, PFNGLCLEARDEPTHPROC, glClearDepth); +GL_IMPORT____(false, PFNGLCLEARCOLORPROC, glClearColor); +GL_IMPORT____(false, PFNGLSTENCILFUNCPROC, glStencilFunc); +GL_IMPORT____(false, PFNGLSTENCILMASKPROC, glStencilMask); +GL_IMPORT____(false, PFNGLSTENCILOPPROC, glStencilOp); #endif // BX_PLATFORM_WINDOWS -GL_IMPORT(false, PFNGLACTIVETEXTUREPROC, glActiveTexture); -GL_IMPORT(false, PFNGLCOMPRESSEDTEXIMAGE2DPROC, glCompressedTexImage2D); -GL_IMPORT(false, PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC, glCompressedTexSubImage2D); -GL_IMPORT(false, PFNGLCOMPRESSEDTEXIMAGE3DPROC, glCompressedTexImage3D); -GL_IMPORT(false, PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC, glCompressedTexSubImage3D); -GL_IMPORT(false, PFNGLBINDBUFFERPROC, glBindBuffer); -GL_IMPORT(false, PFNGLDELETEBUFFERSPROC, glDeleteBuffers); -GL_IMPORT(false, PFNGLGENBUFFERSPROC, glGenBuffers); -GL_IMPORT(false, PFNGLBUFFERDATAPROC, glBufferData); -GL_IMPORT(false, PFNGLBUFFERSUBDATAPROC, glBufferSubData); -GL_IMPORT(false, PFNGLCREATEPROGRAMPROC, glCreateProgram); -GL_IMPORT(false, PFNGLCREATESHADERPROC, glCreateShader); -GL_IMPORT(false, PFNGLDELETEPROGRAMPROC, glDeleteProgram); -GL_IMPORT(false, PFNGLDELETESHADERPROC, glDeleteShader); -GL_IMPORT(false, PFNGLATTACHSHADERPROC, glAttachShader); -GL_IMPORT(false, PFNGLDETACHSHADERPROC, glDetachShader); -GL_IMPORT(false, PFNGLCOMPILESHADERPROC, glCompileShader); -GL_IMPORT(false, PFNGLSHADERSOURCEPROC, glShaderSource); -GL_IMPORT(false, PFNGLGETSHADERIVPROC, glGetShaderiv); -GL_IMPORT(false, PFNGLGETSHADERINFOLOGPROC, glGetShaderInfoLog); -GL_IMPORT(false, PFNGLLINKPROGRAMPROC, glLinkProgram); -GL_IMPORT(false, PFNGLGETPROGRAMIVPROC, glGetProgramiv); -GL_IMPORT(false, PFNGLGETPROGRAMINFOLOGPROC, glGetProgramInfoLog); -GL_IMPORT(false, PFNGLUSEPROGRAMPROC, glUseProgram); -GL_IMPORT(false, PFNGLGETACTIVEATTRIBPROC, glGetActiveAttrib); -GL_IMPORT(false, PFNGLGETATTRIBLOCATIONPROC, glGetAttribLocation); -GL_IMPORT(false, PFNGLGETACTIVEUNIFORMPROC, glGetActiveUniform); -GL_IMPORT(false, PFNGLGETUNIFORMLOCATIONPROC, glGetUniformLocation); -GL_IMPORT(false, PFNGLENABLEVERTEXATTRIBARRAYPROC, glEnableVertexAttribArray); -GL_IMPORT(false, PFNGLDISABLEVERTEXATTRIBARRAYPROC, glDisableVertexAttribArray); -GL_IMPORT(false, PFNGLVERTEXATTRIBPOINTERPROC, glVertexAttribPointer); -GL_IMPORT(false, PFNGLVERTEXATTRIB1FPROC, glVertexAttrib1f); -GL_IMPORT(false, PFNGLVERTEXATTRIB2FPROC, glVertexAttrib2f); -GL_IMPORT(false, PFNGLVERTEXATTRIB3FPROC, glVertexAttrib3f); -GL_IMPORT(false, PFNGLVERTEXATTRIB4FPROC, glVertexAttrib4f); -GL_IMPORT(false, PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer); -GL_IMPORT(false, PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers); -GL_IMPORT(false, PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers); -GL_IMPORT(false, PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus); -GL_IMPORT(false, PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer); -GL_IMPORT(false, PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D); -GL_IMPORT(false, PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer); -GL_IMPORT(false, PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers); -GL_IMPORT(false, PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers); -GL_IMPORT(false, PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage); -GL_IMPORT(false, PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample); -GL_IMPORT(false, PFNGLUNIFORM1IPROC, glUniform1i); -GL_IMPORT(false, PFNGLUNIFORM1IVPROC, glUniform1iv); -GL_IMPORT(false, PFNGLUNIFORM1FPROC, glUniform1f); -GL_IMPORT(false, PFNGLUNIFORM1FVPROC, glUniform1fv); -GL_IMPORT(false, PFNGLUNIFORM2FVPROC, glUniform2fv); -GL_IMPORT(false, PFNGLUNIFORM3FVPROC, glUniform3fv); -GL_IMPORT(false, PFNGLUNIFORM4FVPROC, glUniform4fv); -GL_IMPORT(false, PFNGLUNIFORMMATRIX3FVPROC, glUniformMatrix3fv); -GL_IMPORT(false, PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv); -GL_IMPORT(false, PFNGLTEXIMAGE3DPROC, glTexImage3D); -GL_IMPORT(false, PFNGLTEXSUBIMAGE3DPROC, glTexSubImage3D); -GL_IMPORT(false, PFNGLCOPYTEXSUBIMAGE3DPROC, glCopyTexSubImage3D); +GL_IMPORT____(false, PFNGLACTIVETEXTUREPROC, glActiveTexture); +GL_IMPORT____(false, PFNGLCOMPRESSEDTEXIMAGE2DPROC, glCompressedTexImage2D); +GL_IMPORT____(false, PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC, glCompressedTexSubImage2D); +GL_IMPORT____(false, PFNGLCOMPRESSEDTEXIMAGE3DPROC, glCompressedTexImage3D); +GL_IMPORT____(false, PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC, glCompressedTexSubImage3D); +GL_IMPORT____(false, PFNGLBINDBUFFERPROC, glBindBuffer); +GL_IMPORT____(false, PFNGLDELETEBUFFERSPROC, glDeleteBuffers); +GL_IMPORT____(false, PFNGLGENBUFFERSPROC, glGenBuffers); +GL_IMPORT____(false, PFNGLBUFFERDATAPROC, glBufferData); +GL_IMPORT____(false, PFNGLBUFFERSUBDATAPROC, glBufferSubData); +GL_IMPORT____(false, PFNGLCREATEPROGRAMPROC, glCreateProgram); +GL_IMPORT____(false, PFNGLCREATESHADERPROC, glCreateShader); +GL_IMPORT____(false, PFNGLDELETEPROGRAMPROC, glDeleteProgram); +GL_IMPORT____(false, PFNGLDELETESHADERPROC, glDeleteShader); +GL_IMPORT____(false, PFNGLATTACHSHADERPROC, glAttachShader); +GL_IMPORT____(false, PFNGLDETACHSHADERPROC, glDetachShader); +GL_IMPORT____(false, PFNGLCOMPILESHADERPROC, glCompileShader); +GL_IMPORT____(false, PFNGLSHADERSOURCEPROC, glShaderSource); +GL_IMPORT____(false, PFNGLGETSHADERIVPROC, glGetShaderiv); +GL_IMPORT____(false, PFNGLGETSHADERINFOLOGPROC, glGetShaderInfoLog); +GL_IMPORT____(false, PFNGLLINKPROGRAMPROC, glLinkProgram); +GL_IMPORT____(false, PFNGLGETPROGRAMIVPROC, glGetProgramiv); +GL_IMPORT____(false, PFNGLGETPROGRAMINFOLOGPROC, glGetProgramInfoLog); +GL_IMPORT____(false, PFNGLUSEPROGRAMPROC, glUseProgram); +GL_IMPORT____(false, PFNGLGETACTIVEATTRIBPROC, glGetActiveAttrib); +GL_IMPORT____(false, PFNGLGETATTRIBLOCATIONPROC, glGetAttribLocation); +GL_IMPORT____(false, PFNGLGETACTIVEUNIFORMPROC, glGetActiveUniform); +GL_IMPORT____(false, PFNGLGETUNIFORMLOCATIONPROC, glGetUniformLocation); +GL_IMPORT____(false, PFNGLENABLEVERTEXATTRIBARRAYPROC, glEnableVertexAttribArray); +GL_IMPORT____(false, PFNGLDISABLEVERTEXATTRIBARRAYPROC, glDisableVertexAttribArray); +GL_IMPORT____(false, PFNGLVERTEXATTRIBPOINTERPROC, glVertexAttribPointer); +GL_IMPORT____(false, PFNGLVERTEXATTRIB1FPROC, glVertexAttrib1f); +GL_IMPORT____(false, PFNGLVERTEXATTRIB2FPROC, glVertexAttrib2f); +GL_IMPORT____(false, PFNGLVERTEXATTRIB3FPROC, glVertexAttrib3f); +GL_IMPORT____(false, PFNGLVERTEXATTRIB4FPROC, glVertexAttrib4f); -GL_IMPORT(false, PFNGLGENQUERIESPROC, glGenQueries); -GL_IMPORT(false, PFNGLDELETEQUERIESPROC, glDeleteQueries); -GL_IMPORT(false, PFNGLBEGINQUERYPROC, glBeginQuery); -GL_IMPORT(false, PFNGLENDQUERYPROC, glEndQuery); -GL_IMPORT(false, PFNGLGETQUERYIVPROC, glGetQueryiv); -GL_IMPORT(false, PFNGLGETQUERYOBJECTIVPROC, glGetQueryObjectiv); -GL_IMPORT(false, PFNGLGETQUERYOBJECTUIVPROC, glGetQueryObjectuiv); +#if BGFX_CONFIG_RENDERER_OPENGL >= 31 +GL_IMPORT____(false, PFNGLBINDFRAMEBUFFERPROC, glBindFramebuffer); +GL_IMPORT____(false, PFNGLGENFRAMEBUFFERSPROC, glGenFramebuffers); +GL_IMPORT____(false, PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers); +GL_IMPORT____(false, PFNGLCHECKFRAMEBUFFERSTATUSPROC, glCheckFramebufferStatus); +GL_IMPORT____(false, PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer); +GL_IMPORT____(false, PFNGLFRAMEBUFFERTEXTURE2DPROC, glFramebufferTexture2D); +GL_IMPORT____(false, PFNGLBINDRENDERBUFFERPROC, glBindRenderbuffer); +GL_IMPORT____(false, PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers); +GL_IMPORT____(false, PFNGLDELETERENDERBUFFERSPROC, glDeleteRenderbuffers); +GL_IMPORT____(false, PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage); +GL_IMPORT____(false, PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample); +#else +GL_IMPORT_EXT(false, PFNGLBINDFRAMEBUFFEREXTPROC, glBindFramebuffer); +GL_IMPORT_EXT(false, PFNGLGENFRAMEBUFFERSEXTPROC, glGenFramebuffers); +GL_IMPORT_EXT(false, PFNGLDELETEFRAMEBUFFERSEXTPROC, glDeleteFramebuffers); +GL_IMPORT_EXT(false, PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC, glCheckFramebufferStatus); +GL_IMPORT_EXT(false, PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC, glFramebufferRenderbuffer); +GL_IMPORT_EXT(false, PFNGLFRAMEBUFFERTEXTURE2DEXTPROC, glFramebufferTexture2D); +GL_IMPORT_EXT(false, PFNGLBINDRENDERBUFFEREXTPROC, glBindRenderbuffer); +GL_IMPORT_EXT(false, PFNGLGENRENDERBUFFERSEXTPROC, glGenRenderbuffers); +GL_IMPORT_EXT(false, PFNGLDELETERENDERBUFFERSEXTPROC, glDeleteRenderbuffers); +GL_IMPORT_EXT(false, PFNGLRENDERBUFFERSTORAGEEXTPROC, glRenderbufferStorage); +GL_IMPORT_EXT(false, PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC, glRenderbufferStorageMultisample); +#endif // BGFX_CONFIG_RENDERER_OPENGL >= 31 -GL_IMPORT(true, PFNGLGETPROGRAMBINARYPROC, glGetProgramBinary); -GL_IMPORT(true, PFNGLPROGRAMBINARYPROC, glProgramBinary); -GL_IMPORT(true, PFNGLPROGRAMPARAMETERIPROC, glProgramParameteri); +GL_IMPORT____(false, PFNGLUNIFORM1IPROC, glUniform1i); +GL_IMPORT____(false, PFNGLUNIFORM1IVPROC, glUniform1iv); +GL_IMPORT____(false, PFNGLUNIFORM1FPROC, glUniform1f); +GL_IMPORT____(false, PFNGLUNIFORM1FVPROC, glUniform1fv); +GL_IMPORT____(false, PFNGLUNIFORM2FVPROC, glUniform2fv); +GL_IMPORT____(false, PFNGLUNIFORM3FVPROC, glUniform3fv); +GL_IMPORT____(false, PFNGLUNIFORM4FVPROC, glUniform4fv); +GL_IMPORT____(false, PFNGLUNIFORMMATRIX3FVPROC, glUniformMatrix3fv); +GL_IMPORT____(false, PFNGLUNIFORMMATRIX4FVPROC, glUniformMatrix4fv); +GL_IMPORT____(false, PFNGLTEXIMAGE3DPROC, glTexImage3D); +GL_IMPORT____(false, PFNGLTEXSUBIMAGE3DPROC, glTexSubImage3D); +GL_IMPORT____(false, PFNGLCOPYTEXSUBIMAGE3DPROC, glCopyTexSubImage3D); -GL_IMPORT(true, PFNGLBLITFRAMEBUFFERPROC, glBlitFramebuffer); +GL_IMPORT____(false, PFNGLGENQUERIESPROC, glGenQueries); +GL_IMPORT____(false, PFNGLDELETEQUERIESPROC, glDeleteQueries); +GL_IMPORT____(false, PFNGLBEGINQUERYPROC, glBeginQuery); +GL_IMPORT____(false, PFNGLENDQUERYPROC, glEndQuery); +GL_IMPORT____(false, PFNGLGETQUERYIVPROC, glGetQueryiv); +GL_IMPORT____(false, PFNGLGETQUERYOBJECTIVPROC, glGetQueryObjectiv); +GL_IMPORT____(false, PFNGLGETQUERYOBJECTUIVPROC, glGetQueryObjectuiv); -GL_IMPORT(true, PFNGLQUERYCOUNTERPROC, glQueryCounter); -GL_IMPORT(true, PFNGLGETQUERYOBJECTI64VPROC, glGetQueryObjecti64v); -GL_IMPORT(true, PFNGLGETQUERYOBJECTUI64VPROC, glGetQueryObjectui64v); +GL_IMPORT____(true, PFNGLGETPROGRAMBINARYPROC, glGetProgramBinary); +GL_IMPORT____(true, PFNGLPROGRAMBINARYPROC, glProgramBinary); +GL_IMPORT____(true, PFNGLPROGRAMPARAMETERIPROC, glProgramParameteri); -GL_IMPORT(true, PFNGLBINDVERTEXARRAYPROC, glBindVertexArray); -GL_IMPORT(true, PFNGLDELETEVERTEXARRAYSPROC, glDeleteVertexArrays); -GL_IMPORT(true, PFNGLGENVERTEXARRAYSPROC, glGenVertexArrays); +GL_IMPORT____(true, PFNGLBLITFRAMEBUFFERPROC, glBlitFramebuffer); -GL_IMPORT(true, PFNGLSTENCILFUNCSEPARATEPROC, glStencilFuncSeparate); -GL_IMPORT(true, PFNGLSTENCILMASKSEPARATEPROC, glStencilMaskSeparate); -GL_IMPORT(true, PFNGLSTENCILOPSEPARATEPROC, glStencilOpSeparate); +GL_IMPORT____(true, PFNGLQUERYCOUNTERPROC, glQueryCounter); +GL_IMPORT____(true, PFNGLGETQUERYOBJECTI64VPROC, glGetQueryObjecti64v); +GL_IMPORT____(true, PFNGLGETQUERYOBJECTUI64VPROC, glGetQueryObjectui64v); -GL_IMPORT(true, PFNGLBLENDFUNCSEPARATEPROC, glBlendFuncSeparate); -GL_IMPORT(true, PFNGLBLENDEQUATIONSEPARATEPROC, glBlendEquationSeparate); -GL_IMPORT(true, PFNGLBLENDCOLORPROC, glBlendColor); +GL_IMPORT____(true, PFNGLBINDVERTEXARRAYPROC, glBindVertexArray); +GL_IMPORT____(true, PFNGLDELETEVERTEXARRAYSPROC, glDeleteVertexArrays); +GL_IMPORT____(true, PFNGLGENVERTEXARRAYSPROC, glGenVertexArrays); -GL_IMPORT(true, PFNGLDEBUGMESSAGECONTROLARBPROC, glDebugMessageControlARB); -GL_IMPORT(true, PFNGLDEBUGMESSAGEINSERTARBPROC, glDebugMessageInsertARB); -GL_IMPORT(true, PFNGLDEBUGMESSAGECALLBACKARBPROC, glDebugMessageCallbackARB); -GL_IMPORT(true, PFNGLGETDEBUGMESSAGELOGARBPROC, glGetDebugMessageLogARB); +GL_IMPORT____(true, PFNGLSTENCILFUNCSEPARATEPROC, glStencilFuncSeparate); +GL_IMPORT____(true, PFNGLSTENCILMASKSEPARATEPROC, glStencilMaskSeparate); +GL_IMPORT____(true, PFNGLSTENCILOPSEPARATEPROC, glStencilOpSeparate); -GL_IMPORT(true, PFNGLGENSAMPLERSPROC, glGenSamplers); -GL_IMPORT(true, PFNGLDELETESAMPLERSPROC, glDeleteSamplers); -GL_IMPORT(true, PFNGLBINDSAMPLERPROC, glBindSampler); -GL_IMPORT(true, PFNGLSAMPLERPARAMETERIPROC, glSamplerParameteri); -GL_IMPORT(true, PFNGLSAMPLERPARAMETERFPROC, glSamplerParameterf); +GL_IMPORT____(true, PFNGLBLENDFUNCSEPARATEPROC, glBlendFuncSeparate); +GL_IMPORT____(true, PFNGLBLENDEQUATIONSEPARATEPROC, glBlendEquationSeparate); +GL_IMPORT____(true, PFNGLBLENDCOLORPROC, glBlendColor); + +GL_IMPORT_ARB(true, PFNGLDEBUGMESSAGECONTROLARBPROC, glDebugMessageControl); +GL_IMPORT_ARB(true, PFNGLDEBUGMESSAGEINSERTARBPROC, glDebugMessageInsert); +GL_IMPORT_ARB(true, PFNGLDEBUGMESSAGECALLBACKARBPROC, glDebugMessageCallback); +GL_IMPORT_ARB(true, PFNGLGETDEBUGMESSAGELOGARBPROC, glGetDebugMessageLog); + +GL_IMPORT____(true, PFNGLGENSAMPLERSPROC, glGenSamplers); +GL_IMPORT____(true, PFNGLDELETESAMPLERSPROC, glDeleteSamplers); +GL_IMPORT____(true, PFNGLBINDSAMPLERPROC, glBindSampler); +GL_IMPORT____(true, PFNGLSAMPLERPARAMETERIPROC, glSamplerParameteri); +GL_IMPORT____(true, PFNGLSAMPLERPARAMETERFPROC, glSamplerParameterf); #if BGFX_CONFIG_DEBUG_GREMEDY -GL_IMPORT(true, PFNGLSTRINGMARKERGREMEDYPROC, glStringMarkerGREMEDY); -GL_IMPORT(true, PFNGLFRAMETERMINATORGREMEDYPROC, glFrameTerminatorGREMEDY); +GL_IMPORT____(true, PFNGLSTRINGMARKERGREMEDYPROC, glStringMarkerGREMEDY); +GL_IMPORT____(true, PFNGLFRAMETERMINATORGREMEDYPROC, glFrameTerminatorGREMEDY); #endif // BGFX_CONFIG_DEBUG_GREMEDY #elif BGFX_CONFIG_RENDERER_OPENGLES2 @@ -158,22 +178,23 @@ GL_IMPORT(true, PFNGLFRAMETERMINATORGREMEDYPROC, glFrameTerminatorGREME // OpenGL ES 2.0 Reference Pages // http://www.khronos.org/opengles/sdk/docs/man/ -GL_IMPORT(true, PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC, glGetTranslatedShaderSourceANGLE); -GL_IMPORT(true, PFNGLGETPROGRAMBINARYOESPROC, glGetProgramBinaryOES); -GL_IMPORT(true, PFNGLPROGRAMBINARYOESPROC, glProgramBinaryOES); +GL_IMPORT____(true, PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC, glGetTranslatedShaderSourceANGLE); +GL_IMPORT____(true, PFNGLGETPROGRAMBINARYOESPROC, glGetProgramBinaryOES); +GL_IMPORT____(true, PFNGLPROGRAMBINARYOESPROC, glProgramBinaryOES); -GL_IMPORT(true, PFNGLBINDVERTEXARRAYOESPROC, glBindVertexArrayOES); -GL_IMPORT(true, PFNGLDELETEVERTEXARRAYSOESPROC, glDeleteVertexArraysOES); -GL_IMPORT(true, PFNGLGENVERTEXARRAYSOESPROC, glGenVertexArraysOES); +GL_IMPORT____(true, PFNGLBINDVERTEXARRAYOESPROC, glBindVertexArrayOES); +GL_IMPORT____(true, PFNGLDELETEVERTEXARRAYSOESPROC, glDeleteVertexArraysOES); +GL_IMPORT____(true, PFNGLGENVERTEXARRAYSOESPROC, glGenVertexArraysOES); #endif // BGFX_CONFIG_RENDERER_ #if BGFX_CONFIG_RENDERER_OPENGL -GL_IMPORT(true, PFNGLVERTEXATTRIBDIVISORBGFXPROC, glVertexAttribDivisorARB); -GL_IMPORT(true, PFNGLDRAWARRAYSINSTANCEDBGFXPROC, glDrawArraysInstancedARB); -GL_IMPORT(true, PFNGLDRAWELEMENTSINSTANCEDBGFXPROC, glDrawElementsInstancedARB); +GL_IMPORT_ARB(true, PFNGLVERTEXATTRIBDIVISORBGFXPROC, glVertexAttribDivisor); +GL_IMPORT_ARB(true, PFNGLDRAWARRAYSINSTANCEDBGFXPROC, glDrawArraysInstanced); +GL_IMPORT_ARB(true, PFNGLDRAWELEMENTSINSTANCEDBGFXPROC, glDrawElementsInstanced); #elif BGFX_CONFIG_RENDERER_OPENGLES2 -GL_IMPORT(true, PFNGLVERTEXATTRIBDIVISORBGFXPROC, glVertexAttribDivisor); -GL_IMPORT(true, PFNGLDRAWARRAYSINSTANCEDBGFXPROC, glDrawArraysInstanced); -GL_IMPORT(true, PFNGLDRAWELEMENTSINSTANCEDBGFXPROC, glDrawElementsInstanced); +GL_IMPORT____(true, PFNGLVERTEXATTRIBDIVISORBGFXPROC, glVertexAttribDivisor); +GL_IMPORT____(true, PFNGLDRAWARRAYSINSTANCEDBGFXPROC, glDrawArraysInstanced); +GL_IMPORT____(true, PFNGLDRAWELEMENTSINSTANCEDBGFXPROC, glDrawElementsInstanced); #endif // !BGFX_CONFIG_RENDERER_OPENGLES3 + diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 3b8d5f6bc..047539959 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -2538,8 +2538,8 @@ namespace bgfx if (s_extension[Extension::ARB_debug_output].m_supported) { - GL_CHECK(glDebugMessageCallbackARB(debugProcCb, NULL) ); - GL_CHECK(glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_MEDIUM_ARB, 0, NULL, GL_TRUE) ); + GL_CHECK(glDebugMessageCallback(debugProcCb, NULL) ); + GL_CHECK(glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_MEDIUM_ARB, 0, NULL, GL_TRUE) ); } if (s_extension[Extension::ARB_seamless_cube_map].m_supported) diff --git a/src/renderer_gl.h b/src/renderer_gl.h index d136cace8..138bc5615 100644 --- a/src/renderer_gl.h +++ b/src/renderer_gl.h @@ -38,10 +38,6 @@ # include # endif // BGFX_CONFIG_RENDERER_OPENGL >= 31 -# define glVertexAttribDivisor glVertexAttribDivisorARB -# define glDrawArraysInstanced glDrawArraysInstancedARB -# define glDrawElementsInstanced glDrawElementsInstancedARB - # if BX_PLATFORM_WINDOWS # undef BGFX_USE_WGL # define BGFX_USE_WGL 1 @@ -315,7 +311,7 @@ namespace bgfx #define GREMEDY_SETMARKER(_string) _GREMEDY_SETMARKER(_string) #define GREMEDY_FRAMETERMINATOR() _GREMEDY_FRAMETERMINATOR() -#define GL_IMPORT(_optional, _proto, _func) extern _proto _func +#define GL_IMPORT(_optional, _proto, _func, _import) extern _proto _func #include "glimports.h" #undef GL_IMPORT