+procedure GlDebugCallbackARB(source: GLenum; type_: GLenum; id: GLuint; severity: GLenum; {%H-}length: GLsizei; const message_: PGLchar; {%H-}userParam: PGLvoid); {$IFDEF WINDOWS}stdcall; {$ELSE}cdecl; {$ENDIF}
+var
+ src, typ: String;
+ sv: TSeverity;
+begin
+ case source of
+ GL_DEBUG_SOURCE_API_ARB : src:= 'API';
+ GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB : src:= 'WINDOW';
+ GL_DEBUG_SOURCE_SHADER_COMPILER_ARB: src:= 'SHADER';
+ GL_DEBUG_SOURCE_THIRD_PARTY_ARB : src:= '3RDPARTY';
+ GL_DEBUG_SOURCE_APPLICATION_ARB : src:= 'APPLICATION';
+ GL_DEBUG_SOURCE_OTHER_ARB : src:= 'OTHER';
+ end;
+ src:= 'GL_' + src;
+
+ case type_ of
+ GL_DEBUG_TYPE_ERROR_ARB : typ:= 'ERROR';
+ GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB : typ:= 'DEPRECATED';
+ GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB : typ:= 'UNDEF BEHAV';
+ GL_DEBUG_TYPE_PORTABILITY_ARB : typ:= 'PORTABILITY';
+ GL_DEBUG_TYPE_PERFORMANCE_ARB : typ:= 'PERFORMANCE';
+ GL_DEBUG_TYPE_OTHER_ARB : typ:= 'OTHER';
+ end;
+
+ case severity of
+ GL_DEBUG_SEVERITY_LOW_ARB: sv := svLow;
+ GL_DEBUG_SEVERITY_MEDIUM_ARB: sv := svMedium;
+ GL_DEBUG_SEVERITY_HIGH_ARB: sv := svHigh;
+ end;
+
+ TglcContext(userParam).LogMsg(sv, format('%s [%d] %s',[typ, id, message_]));
+end;
+
+procedure GlDebugCallbackAMD(id: GLuint; category: GLenum; severity: GLenum; {%H-}length: GLsizei; const message_: PGLchar; {%H-}userParam: PGLvoid); {$IFDEF WINDOWS}stdcall; {$ELSE}cdecl; {$ENDIF}
+var
+ src: String;
+ sv: TSeverity;
+begin
+ case category of
+ GL_DEBUG_CATEGORY_API_ERROR_AMD : src:= 'API';
+ GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD : src:= 'WINDOW';
+ GL_DEBUG_CATEGORY_DEPRECATION_AMD : src:= 'SHADER';
+ GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD : src:= 'UNDEF BEHAV';
+ GL_DEBUG_CATEGORY_PERFORMANCE_AMD : src:= 'PERFORMANCE';
+ GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD : src:= 'SHADER';
+ GL_DEBUG_CATEGORY_APPLICATION_AMD : src:= 'APPLICATION';
+ GL_DEBUG_CATEGORY_OTHER_AMD : src:= 'OTHER';
+ end;
+ src:= 'GL_' + src;
+
+ case severity of
+ GL_DEBUG_SEVERITY_LOW_AMD: sv := svLow;
+ GL_DEBUG_SEVERITY_MEDIUM_AMD: sv := svMedium;
+ GL_DEBUG_SEVERITY_HIGH_AMD: sv := svHigh;
+ end;
+
+ TglcContext(userParam).LogMsg(sv, format('[%d] %s',[id, message_]));
+end;
+