当前位置: 首页 > 知识库问答 >
问题:

如何在linux平台上表达openGL glDebugOutput/glDebugMessageCallback

傅阳
2023-03-14

我正在尝试调试我的opengl程序。并尝试使用错误记录功能。glDebugMessageCallback。然而,我能找到的唯一示例使用“typedef ulul(APIENTRY*DEBUGPROC)”或ulul APIENTRY glDebugOutput(...)。我知道APIENTRY是一个基于Windows WINAPI的编译器标志,所以,我如何编写一个使用g编译器在linux上工作的函数?...这可能吗?如果我尝试没有它,我得到...

错误:无效的转换从'ulul*()(GLenum, GLenum, GLuint, GLenum, GLsizei, const GLchar, ulul*)'{aka'ulul*()(无符号int,无符号int,无符号int,无符号int, int, const char, ulul*)'}到'GLDEBUGPROC'{aka'ulul()(无符号int,无符号int,无符号int,无符号int, int, const char, const ulul*)’} [-fpermissive]

共有1个答案

章增
2023-03-14

根据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,int,const char,void*)
与void()不匹配(unsigned int,unsigned int,unsigned int,unsigned int,int,const char,const void*)

基本上,最后一个参数缺少一个const

 类似资料:
  • 工具准备 Ubuntu 16.04,我们已在 Ubuntu 16.04 上做了版本功能的完整验证,建议用户使用此发行版,以防止由于版本不同引发编译或运行错误。下载参见:官网页面,aliyun 镜像站。 cocos2d-x v3.17,下载后解压,下载参见:Cocos官网页面 建议将默认软件源,替换为国内的软件源, 如//mirrors.aliyun.com/ubuntu, 这样在下载依赖时会有更快

  • 我是新来Tarantool的。我想通过ODBC驱动程序在第三方应用程序如Tableau、Power BI中连接Tarantool数据库。 请回答我下面的问题。 1)我想在Windows 10平台上运行Tarantool数据库服务器。有没有可能安装Tarantool在windows平台?如果是,请提供步骤并提供链接,在那里我可以下载Windows的Tarantool,以及如何进一步创建数据库。 2)

  • 问题内容: 现在,我创建了一个小型PHP应用程序,在这里我有使用文件路径的问题,因为在Windows中使用此类型位置,但是当我使用此类型位置定义路径时,但是当应用程序在窗口计算机中运行时,这应该是问题所在。 因此,在这里我想同时定义Windows和Linux平台的DIRECTORY_SEPARATOR。 问题答案: PHP 在所有操作系统中都接受和作为有效的路径分隔符。因此,只需在您的代码中使用

  • 问题内容: 在Java桌面应用程序上是否有与在命令行上设置类似的内容,在Android上是否有类似设置?我试图通过代码在代码中设置它,但是没有用。 如果没有启用此属性的方法,至少还有另一种方法来调试SSL连接的客户端吗? 编辑: 只是为了澄清,这是指原始SSL套接字(SSLSocket和SSLSocketFactory),而不是Apache库或任何其他网络库。 问题答案: 在这一点上,似乎还没有办

  • 如何在谷歌云平台上连接mlab?我正在犯错误。 servlet java.lang.NoClassDefFoundError的未捕获异常:java.lang.Management.ManagementFactory是一个受限类。更多细节请参见Google App Engine开发人员指南。在com.google.apphosting.runtime.security.shared.stub.jav

  • 准备条件 为了在Microsoft Win32®平台编译nginx,你需要做如下准备: Microsoft Visual C 编译器。已知Microsoft Visual Studio®8和10是可用的。 MSYS。 如果想编译OpenSSL®,以及为nginx添加SSL支持,需要安装Perl,比如ActivePerl或者Strawberry Perl。 Subversion® 客户端。可以从这个