如何在linux平台上表达openGL glDebugOutput / glDebugMessageCallback
how to phrase openGL glDebugOutput / glDebugMessageCallback on linux platform
我正在尝试调试我的opengl程序。 并尝试使用错误日志记录功能。 glDebugMessageCallback.然而,我能找到的唯一例子是"typedef void (APIENTRY *DEBUGPROC("或void APIENTRY glDebugOutput(...(。我知道APIENTRY是一个基于Windows WINAPI的编译器标志,那么,我如何编写一个可以使用g ++编译器在Linux上运行的函数?...甚至可能吗? 如果我尝试没有它,我会得到..
错误:从 'void* (((GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar, void*(' {aka 'void* (((unsigned int, unsigned int, unsigned int, unsigned int, int, const char, void*('} 到 'GLDEBUGPROC' {aka 'void (((unsigned int, unsigned int,unsigned int, unsigned int, int, const char, constvoid*('} [-fpermissive]
根据 OpenGL 4.6 规范,第 20.2 节调试消息回调
回调必须是其原型的函数,其形式为
void callback( enum source, enum type, uint id, enum severity, sizei length, const char *message, const void *userParam );
该定义不包含任何提及APIENTRY的内容。但即使这样,大多数 gl.h 文件将包含类似于
#define APIENTRY GLAPIENTRY
但所有这些都与您的问题无关。您遇到的真正问题是您的函数参数与调试消息回调定义不匹配。如错误消息所述:
void* (( (unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, int, const char, void*(不匹配
void (((unsigned int, unsigned int, unsigned int, unsigned int, int,const char, const void*(
基本上,您缺少最后一个参数的const
。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- OpenGL 16 位模板缓冲区?
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 在 openGL 中多次绑定缓冲区
- 如何在linux平台上表达openGL glDebugOutput / glDebugMessageCallback