OpenGL调试错误回调函数的ID参数是什么?

时间:2018-04-18 08:52:08

标签: c++ debugging opengl

错误回调函数的documentation表示:

  

每次生成调试消息时,将调用调用回调函数,其中sourcetypeidseverity与消息关联,{{{ 1}}设置为调试消息的长度,其字符串位于length指向的数组中。 message将设置为userParam参数中传递给userParam的最近一次调用的值。

Source指的是枚举器文档中解释的源类型。

Type是指触发回调的事件的类型。

严重性是指错误的严重程度。

Length是消息字符串的大小(以字节为单位)。

Message是指向消息字符串的指针。

UserParam是用户定义的一些指针,可以是函数,结构,null,内存映射外设......

ID究竟是什么?违规对象? (着色器,程序,纹理)

窗口ID?当前OpenGL上下文的id?

2 个答案:

答案 0 :(得分:2)

这是消息的标识符,详见相关函数glDebugMessageInsert

  

id可用于应用程序定义的用途,可以是任何值。该值将被记录并用于识别消息。

答案 1 :(得分:1)

调试输出中的所有OpenGL错误都有ID。这与消息类型和严重性一起用于标识特定的错误。对于系统生成的错误,ID是实现定义的。但是,如果错误来自standard OpenGL error,则通常是枚举器错误类别(GL_INVALID_ENUMGL_INVALID_OPERATION等)。用户创建的消息可以给自己的ID。

ID的目的是能够识别特定的错误消息,从而允许您使用glDebugMessageControl之类的接口来剔除该特定错误。