[GLExtensions] KHR_debug on OpenGL ES 3 has a KHR suffix on their function pointers. In Desktop OpenGL there is no suffix. So handle this correctly. Make the GrabFunction macro slightly less evil, so update the init_* to reflect it. Thanks Bh44L for the suggestion.

This commit is contained in:
Ryan Houdek 2013-12-30 15:33:53 -06:00 committed by degasus
parent d093276e93
commit d5a7ea2041
3 changed files with 475 additions and 482 deletions

View File

@ -415,17 +415,16 @@ PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB;
PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB; PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB;
// KHR_debug // KHR_debug
PFNGLDEBUGMESSAGECONTROLKHRPROC glDebugMessageControlKHR; PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
PFNGLDEBUGMESSAGEINSERTKHRPROC glDebugMessageInsertKHR; PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallbackKHR; PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
PFNGLGETDEBUGMESSAGELOGKHRPROC glGetDebugMessageLogKHR; PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
PFNGLPUSHDEBUGGROUPKHRPROC glPushDebugGroupKHR; PFNGLGETOBJECTLABELPROC glGetObjectLabel;
PFNGLPOPDEBUGGROUPKHRPROC glPopDebugGroupKHR; PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
PFNGLOBJECTLABELKHRPROC glObjectLabelKHR; PFNGLOBJECTLABELPROC glObjectLabel;
PFNGLGETOBJECTLABELKHRPROC glGetObjectLabelKHR; PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
PFNGLOBJECTPTRLABELKHRPROC glObjectPtrLabelKHR; PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
PFNGLGETOBJECTPTRLABELKHRPROC glGetObjectPtrLabelKHR; PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
PFNGLGETPOINTERVKHRPROC glGetPointervKHR;
// ARB_buffer_storage // ARB_buffer_storage
PFNGLBUFFERSTORAGEPROC glBufferStorage; PFNGLBUFFERSTORAGEPROC glBufferStorage;
@ -575,374 +574,368 @@ namespace GLExtensions
} }
// Private initialization functions // Private initialization functions
// These defines are slightly evil and used in all of the init_* functions
// Pass the function name in, it'll use it as both the string to grab, and the function pointer name
// Suffix edition adds a string suffix to the end of the function string as well
// Upon loading the function pointer, it checks if it is NULL so we can do a simple conditional to see if it is loaded
// eg if (GrabFunction(glGetStringi)) return true;
#define GrabFunction(x) \ #define GrabFunction(x) \
if (GetProcAddress(#x, (void**)&x) == NULL) \ (!!GetProcAddress(#x, (void**)&x))
return false;
#define GrabFunctionSuffix(x, y) \ #define GrabFunctionSuffix(x, y) \
if (GetProcAddress(#x #y, (void**)&x) == NULL) \ (!!GetProcAddress(#x #y, (void**)&x))
return false;
bool init_gl_1_2() bool init_gl_1_2()
{ {
GrabFunction(glCopyTexSubImage3D) return GrabFunction(glCopyTexSubImage3D)
GrabFunction(glDrawRangeElements) && GrabFunction(glDrawRangeElements)
GrabFunction(glTexImage3D) && GrabFunction(glTexImage3D)
GrabFunction(glTexSubImage3D) && GrabFunction(glTexSubImage3D);
return true;
} }
/* /*
bool init_gl_1_3() bool init_gl_1_3()
{ {
GrabFunction(glActiveTexture) return GrabFunction(glActiveTexture)
GrabFunction(glClientActiveTexture) && GrabFunction(glClientActiveTexture)
GrabFunction(glCompressedTexImage1D) && GrabFunction(glCompressedTexImage1D)
GrabFunction(glCompressedTexImage2D) && GrabFunction(glCompressedTexImage2D)
GrabFunction(glCompressedTexImage3D) && GrabFunction(glCompressedTexImage3D)
GrabFunction(glCompressedTexSubImage1D) && GrabFunction(glCompressedTexSubImage1D)
GrabFunction(glCompressedTexSubImage2D) && GrabFunction(glCompressedTexSubImage2D)
GrabFunction(glCompressedTexSubImage3D) && GrabFunction(glCompressedTexSubImage3D)
GrabFunction(glGetCompressedTexImage) && GrabFunction(glGetCompressedTexImage)
GrabFunction(glLoadTransposeMatrixd) && GrabFunction(glLoadTransposeMatrixd)
GrabFunction(glLoadTransposeMatrixf) && GrabFunction(glLoadTransposeMatrixf)
GrabFunction(glMultTransposeMatrixd) && GrabFunction(glMultTransposeMatrixd)
GrabFunction(glMultTransposeMatrixf) && GrabFunction(glMultTransposeMatrixf)
GrabFunction(glMultiTexCoord1d) && GrabFunction(glMultiTexCoord1d)
GrabFunction(glMultiTexCoord1dv) && GrabFunction(glMultiTexCoord1dv)
GrabFunction(glMultiTexCoord1f) && GrabFunction(glMultiTexCoord1f)
GrabFunction(glMultiTexCoord1fv) && GrabFunction(glMultiTexCoord1fv)
GrabFunction(glMultiTexCoord1i) && GrabFunction(glMultiTexCoord1i)
GrabFunction(glMultiTexCoord1iv) && GrabFunction(glMultiTexCoord1iv)
GrabFunction(glMultiTexCoord1s) && GrabFunction(glMultiTexCoord1s)
GrabFunction(glMultiTexCoord1sv) && GrabFunction(glMultiTexCoord1sv)
GrabFunction(glMultiTexCoord2d) && GrabFunction(glMultiTexCoord2d)
GrabFunction(glMultiTexCoord2dv) && GrabFunction(glMultiTexCoord2dv)
GrabFunction(glMultiTexCoord2f) && GrabFunction(glMultiTexCoord2f)
GrabFunction(glMultiTexCoord2fv) && GrabFunction(glMultiTexCoord2fv)
GrabFunction(glMultiTexCoord2i) && GrabFunction(glMultiTexCoord2i)
GrabFunction(glMultiTexCoord2iv) && GrabFunction(glMultiTexCoord2iv)
GrabFunction(glMultiTexCoord2s) && GrabFunction(glMultiTexCoord2s)
GrabFunction(glMultiTexCoord2sv) && GrabFunction(glMultiTexCoord2sv)
GrabFunction(glMultiTexCoord3d) && GrabFunction(glMultiTexCoord3d)
GrabFunction(glMultiTexCoord3dv) && GrabFunction(glMultiTexCoord3dv)
GrabFunction(glMultiTexCoord3f) && GrabFunction(glMultiTexCoord3f)
GrabFunction(glMultiTexCoord3fv) && GrabFunction(glMultiTexCoord3fv)
GrabFunction(glMultiTexCoord3i) && GrabFunction(glMultiTexCoord3i)
GrabFunction(glMultiTexCoord3iv) && GrabFunction(glMultiTexCoord3iv)
GrabFunction(glMultiTexCoord3s) && GrabFunction(glMultiTexCoord3s)
GrabFunction(glMultiTexCoord3sv) && GrabFunction(glMultiTexCoord3sv)
GrabFunction(glMultiTexCoord4d) && GrabFunction(glMultiTexCoord4d)
GrabFunction(glMultiTexCoord4dv) && GrabFunction(glMultiTexCoord4dv)
GrabFunction(glMultiTexCoord4f) && GrabFunction(glMultiTexCoord4f)
GrabFunction(glMultiTexCoord4fv) && GrabFunction(glMultiTexCoord4fv)
GrabFunction(glMultiTexCoord4i) && GrabFunction(glMultiTexCoord4i)
GrabFunction(glMultiTexCoord4iv) && GrabFunction(glMultiTexCoord4iv)
GrabFunction(glMultiTexCoord4s) && GrabFunction(glMultiTexCoord4s)
GrabFunction(glMultiTexCoord4sv) && GrabFunction(glMultiTexCoord4sv)
GrabFunction(glSampleCoverage) && GrabFunction(glSampleCoverage);
return true;
} }
*/ */
bool init_gl_1_4() bool init_gl_1_4()
{ {
//GrabFunction(glBlendColor) //GrabFunction(glBlendColor)
//GrabFunction(glBlendEquation) //GrabFunction(glBlendEquation)
GrabFunction(glBlendFuncSeparate) return GrabFunction(glBlendFuncSeparate)
GrabFunction(glFogCoordPointer) && GrabFunction(glFogCoordPointer)
GrabFunction(glFogCoordd) && GrabFunction(glFogCoordd)
GrabFunction(glFogCoorddv) && GrabFunction(glFogCoorddv)
GrabFunction(glFogCoordf) && GrabFunction(glFogCoordf)
GrabFunction(glFogCoordfv) && GrabFunction(glFogCoordfv)
GrabFunction(glMultiDrawArrays) && GrabFunction(glMultiDrawArrays)
GrabFunction(glMultiDrawElements) && GrabFunction(glMultiDrawElements)
GrabFunction(glPointParameterf) && GrabFunction(glPointParameterf)
GrabFunction(glPointParameterfv) && GrabFunction(glPointParameterfv)
GrabFunction(glPointParameteri) && GrabFunction(glPointParameteri)
GrabFunction(glPointParameteriv) && GrabFunction(glPointParameteriv)
GrabFunction(glSecondaryColor3b) && GrabFunction(glSecondaryColor3b)
GrabFunction(glSecondaryColor3bv) && GrabFunction(glSecondaryColor3bv)
GrabFunction(glSecondaryColor3d) && GrabFunction(glSecondaryColor3d)
GrabFunction(glSecondaryColor3dv) && GrabFunction(glSecondaryColor3dv)
GrabFunction(glSecondaryColor3f) && GrabFunction(glSecondaryColor3f)
GrabFunction(glSecondaryColor3fv) && GrabFunction(glSecondaryColor3fv)
GrabFunction(glSecondaryColor3i) && GrabFunction(glSecondaryColor3i)
GrabFunction(glSecondaryColor3iv) && GrabFunction(glSecondaryColor3iv)
GrabFunction(glSecondaryColor3s) && GrabFunction(glSecondaryColor3s)
GrabFunction(glSecondaryColor3sv) && GrabFunction(glSecondaryColor3sv)
GrabFunction(glSecondaryColor3ub) && GrabFunction(glSecondaryColor3ub)
GrabFunction(glSecondaryColor3ubv) && GrabFunction(glSecondaryColor3ubv)
GrabFunction(glSecondaryColor3ui) && GrabFunction(glSecondaryColor3ui)
GrabFunction(glSecondaryColor3uiv) && GrabFunction(glSecondaryColor3uiv)
GrabFunction(glSecondaryColor3us) && GrabFunction(glSecondaryColor3us)
GrabFunction(glSecondaryColor3usv) && GrabFunction(glSecondaryColor3usv)
GrabFunction(glSecondaryColorPointer) && GrabFunction(glSecondaryColorPointer)
GrabFunction(glWindowPos2d) && GrabFunction(glWindowPos2d)
GrabFunction(glWindowPos2dv) && GrabFunction(glWindowPos2dv)
GrabFunction(glWindowPos2f) && GrabFunction(glWindowPos2f)
GrabFunction(glWindowPos2fv) && GrabFunction(glWindowPos2fv)
GrabFunction(glWindowPos2i) && GrabFunction(glWindowPos2i)
GrabFunction(glWindowPos2iv) && GrabFunction(glWindowPos2iv)
GrabFunction(glWindowPos2s) && GrabFunction(glWindowPos2s)
GrabFunction(glWindowPos2sv) && GrabFunction(glWindowPos2sv)
GrabFunction(glWindowPos3d) && GrabFunction(glWindowPos3d)
GrabFunction(glWindowPos3dv) && GrabFunction(glWindowPos3dv)
GrabFunction(glWindowPos3f) && GrabFunction(glWindowPos3f)
GrabFunction(glWindowPos3fv) && GrabFunction(glWindowPos3fv)
GrabFunction(glWindowPos3i) && GrabFunction(glWindowPos3i)
GrabFunction(glWindowPos3iv) && GrabFunction(glWindowPos3iv)
GrabFunction(glWindowPos3s) && GrabFunction(glWindowPos3s)
GrabFunction(glWindowPos3sv) && GrabFunction(glWindowPos3sv);
return true;
} }
bool init_gl_1_5() bool init_gl_1_5()
{ {
GrabFunction(glBeginQuery) return GrabFunction(glBeginQuery)
GrabFunction(glBindBuffer) && GrabFunction(glBindBuffer)
GrabFunction(glBufferData) && GrabFunction(glBufferData)
GrabFunction(glBufferSubData) && GrabFunction(glBufferSubData)
GrabFunction(glDeleteBuffers) && GrabFunction(glDeleteBuffers)
GrabFunction(glDeleteQueries) && GrabFunction(glDeleteQueries)
GrabFunction(glEndQuery) && GrabFunction(glEndQuery)
GrabFunction(glGenBuffers) && GrabFunction(glGenBuffers)
GrabFunction(glGenQueries) && GrabFunction(glGenQueries)
GrabFunction(glGetBufferParameteriv) && GrabFunction(glGetBufferParameteriv)
GrabFunction(glGetBufferPointerv) && GrabFunction(glGetBufferPointerv)
GrabFunction(glGetBufferSubData) && GrabFunction(glGetBufferSubData)
GrabFunction(glGetQueryObjectiv) && GrabFunction(glGetQueryObjectiv)
GrabFunction(glGetQueryObjectuiv) && GrabFunction(glGetQueryObjectuiv)
GrabFunction(glGetQueryiv) && GrabFunction(glGetQueryiv)
GrabFunction(glIsBuffer) && GrabFunction(glIsBuffer)
GrabFunction(glIsQuery) && GrabFunction(glIsQuery)
GrabFunction(glMapBuffer) && GrabFunction(glMapBuffer)
GrabFunction(glUnmapBuffer) && GrabFunction(glUnmapBuffer);
return true;
} }
bool init_gl_2_0() bool init_gl_2_0()
{ {
GrabFunction(glAttachShader) return GrabFunction(glAttachShader)
GrabFunction(glBindAttribLocation) && GrabFunction(glBindAttribLocation)
GrabFunction(glBlendEquationSeparate) && GrabFunction(glBlendEquationSeparate)
GrabFunction(glCompileShader) && GrabFunction(glCompileShader)
GrabFunction(glCreateProgram) && GrabFunction(glCreateProgram)
GrabFunction(glCreateShader) && GrabFunction(glCreateShader)
GrabFunction(glDeleteProgram) && GrabFunction(glDeleteProgram)
GrabFunction(glDeleteShader) && GrabFunction(glDeleteShader)
GrabFunction(glDetachShader) && GrabFunction(glDetachShader)
GrabFunction(glDisableVertexAttribArray) && GrabFunction(glDisableVertexAttribArray)
GrabFunction(glDrawBuffers) && GrabFunction(glDrawBuffers)
GrabFunction(glEnableVertexAttribArray) && GrabFunction(glEnableVertexAttribArray)
GrabFunction(glGetActiveAttrib) && GrabFunction(glGetActiveAttrib)
GrabFunction(glGetActiveUniform) && GrabFunction(glGetActiveUniform)
GrabFunction(glGetAttachedShaders) && GrabFunction(glGetAttachedShaders)
GrabFunction(glGetAttribLocation) && GrabFunction(glGetAttribLocation)
GrabFunction(glGetProgramInfoLog) && GrabFunction(glGetProgramInfoLog)
GrabFunction(glGetProgramiv) && GrabFunction(glGetProgramiv)
GrabFunction(glGetShaderInfoLog) && GrabFunction(glGetShaderInfoLog)
GrabFunction(glGetShaderSource) && GrabFunction(glGetShaderSource)
GrabFunction(glGetShaderiv) && GrabFunction(glGetShaderiv)
GrabFunction(glGetUniformLocation) && GrabFunction(glGetUniformLocation)
GrabFunction(glGetUniformfv) && GrabFunction(glGetUniformfv)
GrabFunction(glGetUniformiv) && GrabFunction(glGetUniformiv)
GrabFunction(glGetVertexAttribPointerv) && GrabFunction(glGetVertexAttribPointerv)
GrabFunction(glGetVertexAttribdv) && GrabFunction(glGetVertexAttribdv)
GrabFunction(glGetVertexAttribfv) && GrabFunction(glGetVertexAttribfv)
GrabFunction(glGetVertexAttribiv) && GrabFunction(glGetVertexAttribiv)
GrabFunction(glIsProgram) && GrabFunction(glIsProgram)
GrabFunction(glIsShader) && GrabFunction(glIsShader)
GrabFunction(glLinkProgram) && GrabFunction(glLinkProgram)
GrabFunction(glShaderSource) && GrabFunction(glShaderSource)
GrabFunction(glStencilFuncSeparate) && GrabFunction(glStencilFuncSeparate)
GrabFunction(glStencilMaskSeparate) && GrabFunction(glStencilMaskSeparate)
GrabFunction(glStencilOpSeparate) && GrabFunction(glStencilOpSeparate)
GrabFunction(glUniform1f) && GrabFunction(glUniform1f)
GrabFunction(glUniform1fv) && GrabFunction(glUniform1fv)
GrabFunction(glUniform1i) && GrabFunction(glUniform1i)
GrabFunction(glUniform1iv) && GrabFunction(glUniform1iv)
GrabFunction(glUniform2f) && GrabFunction(glUniform2f)
GrabFunction(glUniform2fv) && GrabFunction(glUniform2fv)
GrabFunction(glUniform2i) && GrabFunction(glUniform2i)
GrabFunction(glUniform2iv) && GrabFunction(glUniform2iv)
GrabFunction(glUniform3f) && GrabFunction(glUniform3f)
GrabFunction(glUniform3fv) && GrabFunction(glUniform3fv)
GrabFunction(glUniform3i) && GrabFunction(glUniform3i)
GrabFunction(glUniform3iv) && GrabFunction(glUniform3iv)
GrabFunction(glUniform4f) && GrabFunction(glUniform4f)
GrabFunction(glUniform4fv) && GrabFunction(glUniform4fv)
GrabFunction(glUniform4i) && GrabFunction(glUniform4i)
GrabFunction(glUniform4iv) && GrabFunction(glUniform4iv)
GrabFunction(glUniformMatrix2fv) && GrabFunction(glUniformMatrix2fv)
GrabFunction(glUniformMatrix3fv) && GrabFunction(glUniformMatrix3fv)
GrabFunction(glUniformMatrix4fv) && GrabFunction(glUniformMatrix4fv)
GrabFunction(glUseProgram) && GrabFunction(glUseProgram)
GrabFunction(glValidateProgram) && GrabFunction(glValidateProgram)
GrabFunction(glVertexAttrib1d) && GrabFunction(glVertexAttrib1d)
GrabFunction(glVertexAttrib1dv) && GrabFunction(glVertexAttrib1dv)
GrabFunction(glVertexAttrib1f) && GrabFunction(glVertexAttrib1f)
GrabFunction(glVertexAttrib1fv) && GrabFunction(glVertexAttrib1fv)
GrabFunction(glVertexAttrib1s) && GrabFunction(glVertexAttrib1s)
GrabFunction(glVertexAttrib1sv) && GrabFunction(glVertexAttrib1sv)
GrabFunction(glVertexAttrib2d) && GrabFunction(glVertexAttrib2d)
GrabFunction(glVertexAttrib2dv) && GrabFunction(glVertexAttrib2dv)
GrabFunction(glVertexAttrib2f) && GrabFunction(glVertexAttrib2f)
GrabFunction(glVertexAttrib2fv) && GrabFunction(glVertexAttrib2fv)
GrabFunction(glVertexAttrib2s) && GrabFunction(glVertexAttrib2s)
GrabFunction(glVertexAttrib2sv) && GrabFunction(glVertexAttrib2sv)
GrabFunction(glVertexAttrib3d) && GrabFunction(glVertexAttrib3d)
GrabFunction(glVertexAttrib3dv) && GrabFunction(glVertexAttrib3dv)
GrabFunction(glVertexAttrib3f) && GrabFunction(glVertexAttrib3f)
GrabFunction(glVertexAttrib3fv) && GrabFunction(glVertexAttrib3fv)
GrabFunction(glVertexAttrib3s) && GrabFunction(glVertexAttrib3s)
GrabFunction(glVertexAttrib3sv) && GrabFunction(glVertexAttrib3sv)
GrabFunction(glVertexAttrib4Nbv) && GrabFunction(glVertexAttrib4Nbv)
GrabFunction(glVertexAttrib4Niv) && GrabFunction(glVertexAttrib4Niv)
GrabFunction(glVertexAttrib4Nsv) && GrabFunction(glVertexAttrib4Nsv)
GrabFunction(glVertexAttrib4Nub) && GrabFunction(glVertexAttrib4Nub)
GrabFunction(glVertexAttrib4Nubv) && GrabFunction(glVertexAttrib4Nubv)
GrabFunction(glVertexAttrib4Nuiv) && GrabFunction(glVertexAttrib4Nuiv)
GrabFunction(glVertexAttrib4Nusv) && GrabFunction(glVertexAttrib4Nusv)
GrabFunction(glVertexAttrib4bv) && GrabFunction(glVertexAttrib4bv)
GrabFunction(glVertexAttrib4d) && GrabFunction(glVertexAttrib4d)
GrabFunction(glVertexAttrib4dv) && GrabFunction(glVertexAttrib4dv)
GrabFunction(glVertexAttrib4f) && GrabFunction(glVertexAttrib4f)
GrabFunction(glVertexAttrib4fv) && GrabFunction(glVertexAttrib4fv)
GrabFunction(glVertexAttrib4iv) && GrabFunction(glVertexAttrib4iv)
GrabFunction(glVertexAttrib4s) && GrabFunction(glVertexAttrib4s)
GrabFunction(glVertexAttrib4sv) && GrabFunction(glVertexAttrib4sv)
GrabFunction(glVertexAttrib4ubv) && GrabFunction(glVertexAttrib4ubv)
GrabFunction(glVertexAttrib4uiv) && GrabFunction(glVertexAttrib4uiv)
GrabFunction(glVertexAttrib4usv) && GrabFunction(glVertexAttrib4usv)
GrabFunction(glVertexAttribPointer) && GrabFunction(glVertexAttribPointer);
return true;
} }
bool init_gl_3_0() bool init_gl_3_0()
{ {
if (Version() < 300) if (Version() < 300)
return true; return true;
GrabFunction(glBeginConditionalRender) return GrabFunction(glBeginConditionalRender)
GrabFunction(glBeginTransformFeedback) && GrabFunction(glBeginTransformFeedback)
GrabFunction(glBindFragDataLocation) && GrabFunction(glBindFragDataLocation)
GrabFunction(glClampColor) && GrabFunction(glClampColor)
GrabFunction(glClearBufferfi) && GrabFunction(glClearBufferfi)
GrabFunction(glClearBufferfv) && GrabFunction(glClearBufferfv)
GrabFunction(glClearBufferiv) && GrabFunction(glClearBufferiv)
GrabFunction(glClearBufferuiv) && GrabFunction(glClearBufferuiv)
GrabFunction(glColorMaski) && GrabFunction(glColorMaski)
GrabFunction(glDisablei) && GrabFunction(glDisablei)
GrabFunction(glEnablei) && GrabFunction(glEnablei)
GrabFunction(glEndConditionalRender) && GrabFunction(glEndConditionalRender)
GrabFunction(glEndTransformFeedback) && GrabFunction(glEndTransformFeedback)
GrabFunction(glGetBooleani_v) && GrabFunction(glGetBooleani_v)
GrabFunction(glGetFragDataLocation) && GrabFunction(glGetFragDataLocation)
GrabFunction(glGetStringi) && GrabFunction(glGetStringi)
GrabFunction(glGetTexParameterIiv) && GrabFunction(glGetTexParameterIiv)
GrabFunction(glGetTexParameterIuiv) && GrabFunction(glGetTexParameterIuiv)
GrabFunction(glGetTransformFeedbackVarying) && GrabFunction(glGetTransformFeedbackVarying)
GrabFunction(glGetUniformuiv) && GrabFunction(glGetUniformuiv)
GrabFunction(glGetVertexAttribIiv) && GrabFunction(glGetVertexAttribIiv)
GrabFunction(glGetVertexAttribIuiv) && GrabFunction(glGetVertexAttribIuiv)
GrabFunction(glIsEnabledi) && GrabFunction(glIsEnabledi)
GrabFunction(glTexParameterIiv) && GrabFunction(glTexParameterIiv)
GrabFunction(glTexParameterIuiv) && GrabFunction(glTexParameterIuiv)
GrabFunction(glTransformFeedbackVaryings) && GrabFunction(glTransformFeedbackVaryings)
GrabFunction(glUniform1ui) && GrabFunction(glUniform1ui)
GrabFunction(glUniform1uiv) && GrabFunction(glUniform1uiv)
GrabFunction(glUniform2ui) && GrabFunction(glUniform2ui)
GrabFunction(glUniform2uiv) && GrabFunction(glUniform2uiv)
GrabFunction(glUniform3ui) && GrabFunction(glUniform3ui)
GrabFunction(glUniform3uiv) && GrabFunction(glUniform3uiv)
GrabFunction(glUniform4ui) && GrabFunction(glUniform4ui)
GrabFunction(glUniform4uiv) && GrabFunction(glUniform4uiv)
GrabFunction(glVertexAttribI1i) && GrabFunction(glVertexAttribI1i)
GrabFunction(glVertexAttribI1iv) && GrabFunction(glVertexAttribI1iv)
GrabFunction(glVertexAttribI1ui) && GrabFunction(glVertexAttribI1ui)
GrabFunction(glVertexAttribI1uiv) && GrabFunction(glVertexAttribI1uiv)
GrabFunction(glVertexAttribI2i) && GrabFunction(glVertexAttribI2i)
GrabFunction(glVertexAttribI2iv) && GrabFunction(glVertexAttribI2iv)
GrabFunction(glVertexAttribI2ui) && GrabFunction(glVertexAttribI2ui)
GrabFunction(glVertexAttribI2uiv) && GrabFunction(glVertexAttribI2uiv)
GrabFunction(glVertexAttribI3i) && GrabFunction(glVertexAttribI3i)
GrabFunction(glVertexAttribI3iv) && GrabFunction(glVertexAttribI3iv)
GrabFunction(glVertexAttribI3ui) && GrabFunction(glVertexAttribI3ui)
GrabFunction(glVertexAttribI3uiv) && GrabFunction(glVertexAttribI3uiv)
GrabFunction(glVertexAttribI4bv) && GrabFunction(glVertexAttribI4bv)
GrabFunction(glVertexAttribI4i) && GrabFunction(glVertexAttribI4i)
GrabFunction(glVertexAttribI4iv) && GrabFunction(glVertexAttribI4iv)
GrabFunction(glVertexAttribI4sv) && GrabFunction(glVertexAttribI4sv)
GrabFunction(glVertexAttribI4ubv) && GrabFunction(glVertexAttribI4ubv)
GrabFunction(glVertexAttribI4ui) && GrabFunction(glVertexAttribI4ui)
GrabFunction(glVertexAttribI4uiv) && GrabFunction(glVertexAttribI4uiv)
GrabFunction(glVertexAttribI4usv) && GrabFunction(glVertexAttribI4usv)
GrabFunction(glVertexAttribIPointer) && GrabFunction(glVertexAttribIPointer);
return true;
} }
bool init_gl_3_1() bool init_gl_3_1()
{ {
if (Version() < 310) if (Version() < 310)
return true; return true;
GrabFunction(glDrawArraysInstanced) return GrabFunction(glDrawArraysInstanced)
GrabFunction(glDrawElementsInstanced) && GrabFunction(glDrawElementsInstanced)
GrabFunction(glPrimitiveRestartIndex) && GrabFunction(glPrimitiveRestartIndex)
GrabFunction(glTexBuffer) && GrabFunction(glTexBuffer);
return true;
} }
bool init_gl_3_2() bool init_gl_3_2()
{ {
if (Version() < 320) if (Version() < 320)
return true; return true;
GrabFunction(glFramebufferTexture) return GrabFunction(glFramebufferTexture)
GrabFunction(glGetBufferParameteri64v) && GrabFunction(glGetBufferParameteri64v)
GrabFunction(glGetInteger64i_v) && GrabFunction(glGetInteger64i_v);
return true;
} }
bool init_arb_uniform_buffer_object() bool init_arb_uniform_buffer_object()
{ {
if (!Supports("GL_ARB_uniform_buffer_object")) if (!Supports("GL_ARB_uniform_buffer_object"))
return true; return true;
GrabFunction(glBindBufferBase) return GrabFunction(glBindBufferBase)
GrabFunction(glBindBufferRange) && GrabFunction(glBindBufferRange)
GrabFunction(glGetActiveUniformBlockName) && GrabFunction(glGetActiveUniformBlockName)
GrabFunction(glGetActiveUniformBlockiv) && GrabFunction(glGetActiveUniformBlockiv)
GrabFunction(glGetActiveUniformName) && GrabFunction(glGetActiveUniformName)
GrabFunction(glGetActiveUniformsiv) && GrabFunction(glGetActiveUniformsiv)
GrabFunction(glGetIntegeri_v) && GrabFunction(glGetIntegeri_v)
GrabFunction(glGetUniformBlockIndex) && GrabFunction(glGetUniformBlockIndex)
GrabFunction(glGetUniformIndices) && GrabFunction(glGetUniformIndices)
GrabFunction(glUniformBlockBinding) && GrabFunction(glUniformBlockBinding);
return true;
} }
bool init_arb_sampler_objects() bool init_arb_sampler_objects()
{ {
if (!Supports("GL_ARB_sampler_objects")) if (!Supports("GL_ARB_sampler_objects"))
return true; return true;
GrabFunction(glBindSampler) return GrabFunction(glBindSampler)
GrabFunction(glDeleteSamplers) && GrabFunction(glDeleteSamplers)
GrabFunction(glGenSamplers) && GrabFunction(glGenSamplers)
GrabFunction(glGetSamplerParameterIiv) && GrabFunction(glGetSamplerParameterIiv)
GrabFunction(glGetSamplerParameterIuiv) && GrabFunction(glGetSamplerParameterIuiv)
GrabFunction(glGetSamplerParameterfv) && GrabFunction(glGetSamplerParameterfv)
GrabFunction(glGetSamplerParameteriv) && GrabFunction(glGetSamplerParameteriv)
GrabFunction(glIsSampler) && GrabFunction(glIsSampler)
GrabFunction(glSamplerParameterIiv) && GrabFunction(glSamplerParameterIiv)
GrabFunction(glSamplerParameterIuiv) && GrabFunction(glSamplerParameterIuiv)
GrabFunction(glSamplerParameterf) && GrabFunction(glSamplerParameterf)
GrabFunction(glSamplerParameterfv) && GrabFunction(glSamplerParameterfv)
GrabFunction(glSamplerParameteri) && GrabFunction(glSamplerParameteri)
GrabFunction(glSamplerParameteriv) && GrabFunction(glSamplerParameteriv);
return true;
} }
bool init_arb_map_buffer_range() bool init_arb_map_buffer_range()
{ {
if (!Supports("GL_ARB_map_buffer_range")) if (!Supports("GL_ARB_map_buffer_range"))
return true; return true;
GrabFunction(glFlushMappedBufferRange) return GrabFunction(glFlushMappedBufferRange)
GrabFunction(glMapBufferRange) && GrabFunction(glMapBufferRange);
return true;
} }
bool init_arb_vertex_array_object() bool init_arb_vertex_array_object()
@ -952,56 +945,54 @@ namespace GLExtensions
return true; return true;
if (Supports("GL_ARB_vertex_array_object")) if (Supports("GL_ARB_vertex_array_object"))
{ {
GrabFunction(glBindVertexArray) return GrabFunction(glBindVertexArray)
GrabFunction(glDeleteVertexArrays) && GrabFunction(glDeleteVertexArrays)
GrabFunction(glGenVertexArrays) && GrabFunction(glGenVertexArrays)
GrabFunction(glIsVertexArray) && GrabFunction(glIsVertexArray);
} }
else if (Supports("GL_APPLE_vertex_array_object")) else if (Supports("GL_APPLE_vertex_array_object"))
{ {
GrabFunctionSuffix(glBindVertexArray, APPLE) return GrabFunctionSuffix(glBindVertexArray, APPLE)
GrabFunctionSuffix(glDeleteVertexArrays, APPLE) && GrabFunctionSuffix(glDeleteVertexArrays, APPLE)
GrabFunctionSuffix(glGenVertexArrays, APPLE) && GrabFunctionSuffix(glGenVertexArrays, APPLE)
GrabFunctionSuffix(glIsVertexArray, APPLE) && GrabFunctionSuffix(glIsVertexArray, APPLE);
} }
return true; return true; // Quell compiler warning. Won't ever be reached
} }
bool init_arb_framebuffer_object() bool init_arb_framebuffer_object()
{ {
if (!Supports("GL_ARB_framebuffer_object")) if (!Supports("GL_ARB_framebuffer_object"))
return true; return true;
GrabFunction(glBindFramebuffer) return GrabFunction(glBindFramebuffer)
GrabFunction(glBindRenderbuffer) && GrabFunction(glBindRenderbuffer)
GrabFunction(glBlitFramebuffer) && GrabFunction(glBlitFramebuffer)
GrabFunction(glCheckFramebufferStatus) && GrabFunction(glCheckFramebufferStatus)
GrabFunction(glDeleteFramebuffers) && GrabFunction(glDeleteFramebuffers)
GrabFunction(glDeleteRenderbuffers) && GrabFunction(glDeleteRenderbuffers)
GrabFunction(glFramebufferRenderbuffer) && GrabFunction(glFramebufferRenderbuffer)
GrabFunction(glFramebufferTexture1D) && GrabFunction(glFramebufferTexture1D)
GrabFunction(glFramebufferTexture2D) && GrabFunction(glFramebufferTexture2D)
GrabFunction(glFramebufferTexture3D) && GrabFunction(glFramebufferTexture3D)
GrabFunction(glFramebufferTextureLayer) && GrabFunction(glFramebufferTextureLayer)
GrabFunction(glGenFramebuffers) && GrabFunction(glGenFramebuffers)
GrabFunction(glGenRenderbuffers) && GrabFunction(glGenRenderbuffers)
GrabFunction(glGenerateMipmap) && GrabFunction(glGenerateMipmap)
GrabFunction(glGetFramebufferAttachmentParameteriv) && GrabFunction(glGetFramebufferAttachmentParameteriv)
GrabFunction(glGetRenderbufferParameteriv) && GrabFunction(glGetRenderbufferParameteriv)
GrabFunction(glIsFramebuffer) && GrabFunction(glIsFramebuffer)
GrabFunction(glIsRenderbuffer) && GrabFunction(glIsRenderbuffer)
GrabFunction(glRenderbufferStorage) && GrabFunction(glRenderbufferStorage)
GrabFunction(glRenderbufferStorageMultisample) && GrabFunction(glRenderbufferStorageMultisample);
return true;
} }
bool init_arb_get_program_binary() bool init_arb_get_program_binary()
{ {
if (!Supports("GL_ARB_get_program_binary")) if (!Supports("GL_ARB_get_program_binary"))
return true; return true;
GrabFunction(glGetProgramBinary) return GrabFunction(glGetProgramBinary)
GrabFunction(glProgramBinary) && GrabFunction(glProgramBinary)
GrabFunction(glProgramParameteri) && GrabFunction(glProgramParameteri);
return true;
} }
bool init_arb_sync() bool init_arb_sync()
@ -1009,125 +1000,125 @@ namespace GLExtensions
if (!(Supports("GL_ARB_sync") || if (!(Supports("GL_ARB_sync") ||
Version() >= 320)) Version() >= 320))
return true; return true;
GrabFunction(glClientWaitSync) return GrabFunction(glClientWaitSync)
GrabFunction(glDeleteSync) && GrabFunction(glDeleteSync)
GrabFunction(glFenceSync) && GrabFunction(glFenceSync)
GrabFunction(glGetInteger64v) && GrabFunction(glGetInteger64v)
GrabFunction(glGetSynciv) && GrabFunction(glGetSynciv)
GrabFunction(glIsSync) && GrabFunction(glIsSync)
GrabFunction(glWaitSync) && GrabFunction(glWaitSync);
return true;
} }
bool init_arb_es2_compatibility() bool init_arb_es2_compatibility()
{ {
if (!Supports("GL_ARB_ES2_compatibility")) if (!Supports("GL_ARB_ES2_compatibility"))
return true; return true;
GrabFunction(glClearDepthf) return GrabFunction(glClearDepthf)
GrabFunction(glDepthRangef) && GrabFunction(glDepthRangef)
GrabFunction(glGetShaderPrecisionFormat) && GrabFunction(glGetShaderPrecisionFormat)
GrabFunction(glReleaseShaderCompiler) && GrabFunction(glReleaseShaderCompiler)
GrabFunction(glShaderBinary) && GrabFunction(glShaderBinary);
return true;
} }
bool init_nv_primitive_restart() bool init_nv_primitive_restart()
{ {
if (!Supports("GL_NV_primitive_restart")) if (!Supports("GL_NV_primitive_restart"))
return true; return true;
GrabFunction(glPrimitiveRestartIndexNV) return GrabFunction(glPrimitiveRestartIndexNV)
GrabFunction(glPrimitiveRestartNV) && GrabFunction(glPrimitiveRestartNV);
return true;
} }
bool init_arb_blend_func_extended() bool init_arb_blend_func_extended()
{ {
if (!Supports("GL_ARB_blend_func_extended")) if (!Supports("GL_ARB_blend_func_extended"))
return true; return true;
GrabFunction(glBindFragDataLocationIndexed) return GrabFunction(glBindFragDataLocationIndexed)
GrabFunction(glGetFragDataIndex) && GrabFunction(glGetFragDataIndex);
return true;
} }
bool init_arb_viewport_array() bool init_arb_viewport_array()
{ {
if (!Supports("GL_ARB_viewport_array")) if (!Supports("GL_ARB_viewport_array"))
return true; return true;
GrabFunction(glDepthRangeArrayv) return GrabFunction(glDepthRangeArrayv)
GrabFunction(glDepthRangeIndexed) && GrabFunction(glDepthRangeIndexed)
GrabFunction(glGetDoublei_v) && GrabFunction(glGetDoublei_v)
GrabFunction(glGetFloati_v) && GrabFunction(glGetFloati_v)
GrabFunction(glScissorArrayv) && GrabFunction(glScissorArrayv)
GrabFunction(glScissorIndexed) && GrabFunction(glScissorIndexed)
GrabFunction(glScissorIndexedv) && GrabFunction(glScissorIndexedv)
GrabFunction(glViewportArrayv) && GrabFunction(glViewportArrayv)
GrabFunction(glViewportIndexedf) && GrabFunction(glViewportIndexedf)
GrabFunction(glViewportIndexedfv) && GrabFunction(glViewportIndexedfv);
return true;
} }
bool init_arb_draw_elements_base_vertex() bool init_arb_draw_elements_base_vertex()
{ {
if (!Supports("GL_ARB_draw_elements_base_vertex")) if (!Supports("GL_ARB_draw_elements_base_vertex"))
return true; return true;
GrabFunction(glDrawElementsBaseVertex) return GrabFunction(glDrawElementsBaseVertex)
GrabFunction(glDrawElementsInstancedBaseVertex) && GrabFunction(glDrawElementsInstancedBaseVertex)
GrabFunction(glDrawRangeElementsBaseVertex) && GrabFunction(glDrawRangeElementsBaseVertex)
GrabFunction(glMultiDrawElementsBaseVertex) && GrabFunction(glMultiDrawElementsBaseVertex);
return true;
} }
bool init_nv_framebuffer_multisample_coverage() bool init_nv_framebuffer_multisample_coverage()
{ {
if (!Supports("GL_NV_framebuffer_multisample_coverage")) if (!Supports("GL_NV_framebuffer_multisample_coverage"))
return true; return true;
GrabFunction(glRenderbufferStorageMultisampleCoverageNV) return GrabFunction(glRenderbufferStorageMultisampleCoverageNV);
return true;
} }
bool init_arb_sample_shading() bool init_arb_sample_shading()
{ {
if (!Supports("GL_ARB_sample_shading")) if (!Supports("GL_ARB_sample_shading"))
return true; return true;
GrabFunction(glMinSampleShadingARB) return GrabFunction(glMinSampleShadingARB);
return true;
} }
bool init_arb_debug_output() bool init_arb_debug_output()
{ {
if (!Supports("GL_ARB_debug_output")) if (!Supports("GL_ARB_debug_output"))
return true; return true;
GrabFunction(glDebugMessageCallbackARB) return GrabFunction(glDebugMessageCallbackARB)
GrabFunction(glDebugMessageControlARB) && GrabFunction(glDebugMessageControlARB)
GrabFunction(glDebugMessageInsertARB) && GrabFunction(glDebugMessageInsertARB)
GrabFunction(glGetDebugMessageLogARB) && GrabFunction(glGetDebugMessageLogARB);
return true;
} }
bool init_khr_debug() bool init_khr_debug()
{ {
if (!Supports("GL_KHR_debug")) if (!Supports("GL_KHR_debug"))
return true; return true;
GrabFunction(glDebugMessageControlKHR) if (_isES3)
GrabFunction(glDebugMessageInsertKHR) return GrabFunctionSuffix(glDebugMessageCallback, KHR)
GrabFunction(glDebugMessageCallbackKHR) && GrabFunctionSuffix(glDebugMessageControl, KHR)
GrabFunction(glGetDebugMessageLogKHR) && GrabFunctionSuffix(glDebugMessageInsert, KHR)
GrabFunction(glPushDebugGroupKHR) && GrabFunctionSuffix(glGetDebugMessageLog, KHR)
GrabFunction(glPopDebugGroupKHR) && GrabFunctionSuffix(glGetObjectLabel, KHR)
GrabFunction(glObjectLabelKHR) && GrabFunctionSuffix(glGetObjectPtrLabel, KHR)
GrabFunction(glGetObjectLabelKHR) && GrabFunctionSuffix(glObjectLabel, KHR)
GrabFunction(glObjectPtrLabelKHR) && GrabFunctionSuffix(glObjectPtrLabel, KHR)
GrabFunction(glGetObjectPtrLabelKHR) && GrabFunctionSuffix(glPopDebugGroup, KHR)
GrabFunction(glGetPointervKHR) && GrabFunctionSuffix(glPushDebugGroup, KHR);
return true; else
return GrabFunction(glDebugMessageCallback)
&& GrabFunction(glDebugMessageControl)
&& GrabFunction(glDebugMessageInsert)
&& GrabFunction(glGetDebugMessageLog)
&& GrabFunction(glGetObjectLabel)
&& GrabFunction(glGetObjectPtrLabel)
&& GrabFunction(glObjectLabel)
&& GrabFunction(glObjectPtrLabel)
&& GrabFunction(glPopDebugGroup)
&& GrabFunction(glPushDebugGroup);
} }
bool init_arb_buffer_storage() bool init_arb_buffer_storage()
{ {
if (!Supports("GL_ARB_buffer_storage")) if (!Supports("GL_ARB_buffer_storage"))
return true; return true;
GrabFunction(glBufferStorage) return GrabFunction(glBufferStorage)
GrabFunction(glNamedBufferStorageEXT) && GrabFunction(glNamedBufferStorageEXT);
return true;
} }
} }

View File

@ -4,70 +4,72 @@
#include "gl_common.h" #include "gl_common.h"
typedef void (GLAPIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void #ifndef GL_VERSION_4_3
*userParam);
#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
#define GL_STACK_OVERFLOW 0x0503
#define GL_STACK_UNDERFLOW 0x0504
#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
#define GL_DEBUG_SOURCE_API 0x8246
#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
#define GL_DEBUG_SOURCE_APPLICATION 0x824A
#define GL_DEBUG_SOURCE_OTHER 0x824B
#define GL_DEBUG_TYPE_ERROR 0x824C
#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
#define GL_DEBUG_TYPE_PORTABILITY 0x824F
#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
#define GL_DEBUG_TYPE_OTHER 0x8251
#define GL_DEBUG_TYPE_MARKER 0x8268
#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
#define GL_DEBUG_TYPE_POP_GROUP 0x826A
#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
#define GL_BUFFER 0x82E0
#define GL_SHADER 0x82E1
#define GL_PROGRAM 0x82E2
#define GL_QUERY 0x82E3
#define GL_PROGRAM_PIPELINE 0x82E4
#define GL_SAMPLER 0x82E6 #define GL_SAMPLER 0x82E6
#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 #define GL_DISPLAY_LIST 0x82E7
#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 #define GL_MAX_LABEL_LENGTH 0x82E8
#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 #define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 #define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
#define GL_DEBUG_SOURCE_API_KHR 0x8246 #define GL_DEBUG_LOGGED_MESSAGES 0x9145
#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 #define GL_DEBUG_SEVERITY_HIGH 0x9146
#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 #define GL_DEBUG_SEVERITY_MEDIUM 0x9147
#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 #define GL_DEBUG_SEVERITY_LOW 0x9148
#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A #define GL_DEBUG_OUTPUT 0x92E0
#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B
#define GL_DEBUG_TYPE_ERROR_KHR 0x824C
#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D
#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E
#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F
#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250
#define GL_DEBUG_TYPE_OTHER_KHR 0x8251
#define GL_DEBUG_TYPE_MARKER_KHR 0x8268
#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269
#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A
#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B
#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C
#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D
#define GL_BUFFER_KHR 0x82E0
#define GL_SHADER_KHR 0x82E1
#define GL_PROGRAM_KHR 0x82E2
#define GL_VERTEX_ARRAY_KHR 0x8074
#define GL_QUERY_KHR 0x82E3
#define GL_SAMPLER_KHR 0x82E6
#define GL_MAX_LABEL_LENGTH_KHR 0x82E8
#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143
#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144
#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145
#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146
#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147
#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148
#define GL_DEBUG_OUTPUT_KHR 0x92E0
#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002
#define GL_STACK_OVERFLOW_KHR 0x0503
#define GL_STACK_UNDERFLOW_KHR 0x0504
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); typedef void (APIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam);
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam);
typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUPKHRPROC) (void);
typedef void (GLAPIENTRY * PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label);
typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
typedef void (GLAPIENTRY * PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params);
extern PFNGLDEBUGMESSAGECONTROLKHRPROC glDebugMessageControlKHR; typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const GLvoid *userParam);
extern PFNGLDEBUGMESSAGEINSERTKHRPROC glDebugMessageInsertKHR; typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
extern PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallbackKHR; typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf);
extern PFNGLGETDEBUGMESSAGELOGKHRPROC glGetDebugMessageLogKHR; typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog);
extern PFNGLPUSHDEBUGGROUPKHRPROC glPushDebugGroupKHR; typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar *label);
extern PFNGLPOPDEBUGGROUPKHRPROC glPopDebugGroupKHR; typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABELPROC) (void* ptr, GLsizei bufSize, GLsizei* length, GLchar *label);
extern PFNGLOBJECTLABELKHRPROC glObjectLabelKHR; typedef void (GLAPIENTRY * PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar* label);
extern PFNGLGETOBJECTLABELKHRPROC glGetObjectLabelKHR; typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABELPROC) (void* ptr, GLsizei length, const GLchar* label);
extern PFNGLOBJECTPTRLABELKHRPROC glObjectPtrLabelKHR; typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUPPROC) (void);
extern PFNGLGETOBJECTPTRLABELKHRPROC glGetObjectPtrLabelKHR; typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar * message);
extern PFNGLGETPOINTERVKHRPROC glGetPointervKHR;
#endif
extern PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
extern PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
extern PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
extern PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
extern PFNGLGETOBJECTLABELPROC glGetObjectLabel;
extern PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
extern PFNGLOBJECTLABELPROC glObjectLabel;
extern PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
extern PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
extern PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;

View File

@ -486,9 +486,9 @@ Renderer::Renderer()
#if defined(_DEBUG) || defined(DEBUGFAST) #if defined(_DEBUG) || defined(DEBUGFAST)
if (GLExtensions::Supports("GL_KHR_debug")) if (GLExtensions::Supports("GL_KHR_debug"))
{ {
glDebugMessageControlKHR(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, true); glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, NULL, true);
glDebugMessageCallbackKHR( ErrorCallback, NULL ); glDebugMessageCallback( ErrorCallback, NULL );
glEnable( GL_DEBUG_OUTPUT_KHR ); glEnable( GL_DEBUG_OUTPUT );
} }
else if (GLExtensions::Supports("GL_ARB_debug_output")) else if (GLExtensions::Supports("GL_ARB_debug_output"))
{ {