错误回调函数的documentation表示:
每次生成调试消息时,将调用调用回调函数,其中
source
,type
,id
和severity
与消息关联,{{{ 1}}设置为调试消息的长度,其字符串位于length
指向的数组中。message
将设置为userParam
参数中传递给userParam
的最近一次调用的值。
Source指的是枚举器文档中解释的源类型。
Type是指触发回调的事件的类型。
严重性是指错误的严重程度。
Length是消息字符串的大小(以字节为单位)。
Message是指向消息字符串的指针。
UserParam是用户定义的一些指针,可以是函数,结构,null,内存映射外设......
ID究竟是什么?违规对象? (着色器,程序,纹理)
窗口ID?当前OpenGL上下文的id?
答案 0 :(得分:2)
这是消息的标识符,详见相关函数glDebugMessageInsert
:
id
可用于应用程序定义的用途,可以是任何值。该值将被记录并用于识别消息。
答案 1 :(得分:1)
调试输出中的所有OpenGL错误都有ID。这与消息类型和严重性一起用于标识特定的错误。对于系统生成的错误,ID是实现定义的。但是,如果错误来自standard OpenGL error,则通常是枚举器错误类别(GL_INVALID_ENUM
,GL_INVALID_OPERATION
等)。用户创建的消息可以给自己的ID。
ID的目的是能够识别特定的错误消息,从而允许您使用glDebugMessageControl
之类的接口来剔除该特定错误。