有时需要很长时间插入条件打印并检查glGetError()以使用二进制搜索形式缩小范围,其中第一个函数调用是OpenGL首先报告错误。我认为,如果有一种方法可以构建一个宏,我可以环绕所有可能失败的GL调用,并在之后立即有条件地调用glGetError,那将会很酷。当为一个特殊目标编译时,我可以让它以非常高的粒度检查glGetError,而为典型的发布或调试编译时,这不会被启用(我只会每帧检查一次)。这样做有意义吗?稍微搜索了一下,我发现一些人建议在每次非绘制gl调用之后调用glGetError,这基本上与我描述的相同。那么在这种情况下,我可以做些什么(上下文:我正在使用GLEW)来简化
我正在使用QT4.8.4并在QGraphicsScene背景上绘制OpenGL。问题是我从glGetError()中得到无效返回。我的代码片段:while(GLenumerr=glGetError()!=GL_NO_ERROR){std::cerr在应用程序输出中,我得到了很多带有数字1的行从文档中我看到可能的值是:GL_NO_ERROR、GL_INVALID_ENUM、GL_INVALID_VALUE、GL_INVALID_OPERATION、GL_INVALID_FRAMEBUFFER_OPERATION、GL_OUT_OF_MEMORY、GL_STACK_UNDERFLOW、GL
我使用GLEW和freeglut。出于某种原因,在调用glewInit()后,glGetError()返回错误代码1280,即使glewExperimental=GL_FALSE也是如此。我无法编译着色器,glGetProgramInfoLog()返回“顶点着色器在调用glLinkProgram()之前没有成功编译。链接失败。”我之前能够编译着色器。重新安装驱动程序没有帮助。这是我的代码:intmain(intargc,char*argv[]){GLenumGlewInitResult,res;InitWindow(argc,argv);res=glGetError();//res=0
我使用GLEW和freeglut。出于某种原因,在调用glewInit()后,glGetError()返回错误代码1280,即使glewExperimental=GL_FALSE也是如此。我无法编译着色器,glGetProgramInfoLog()返回“顶点着色器在调用glLinkProgram()之前没有成功编译。链接失败。”我之前能够编译着色器。重新安装驱动程序没有帮助。这是我的代码:intmain(intargc,char*argv[]){GLenumGlewInitResult,res;InitWindow(argc,argv);res=glGetError();//res=0
我正在Android上试验一些OpenGL,之前没有任何3D编程经验。所以很明显我在我的程序中犯了很多错误。当我遇到问题并发现glGetError产生错误代码时,我只是在每次调用绘图代码中的OpenGL命令后添加对glGetError的调用。虽然这行得通并且我以这种方式发现了我的错误,但我认为我的绘图代码现在是两倍大并且更难阅读。有没有办法摆脱所有这些对glGetError的显式调用并自动调用它?如果发生OpenGL错误,我的应用程序最好中止并显示错误指示哪个命令负责。 最佳答案 从4.2版开始,Android在手机的开发人员选项中
我正在使用带顶点和着色器的OpenGL,屏幕上没有显示任何内容,所以我使用glGetError进行调试:我在一个名为color_array_buffer的缓冲区上收到错误1281(错误值),这是我正在谈论的部分:GLenumerror=glGetError();if(error){cout这是我将缓冲区链接到数组的代码:if(textured){texture=newsf::Texture();if(!texture->loadFromFile("textures/simple.jpeg"/*,sf::IntRect(0,0,128,128)*/))std::cout和我的uvs值:u
背景在工作中,我们开发了两种产品,它们都具有OpenGL3.x+和GLES2.0/3.0+后端。团队是独立的,但确实有一些重叠,我们最近讨论了glGetError的性能。在这两种产品中,设计都是这样的,即任何GL调用都不应生成由glGetError记录的错误代码。为了检测此类错误,在调试中我们有一个宏,它在每次GL调用后添加一个glGetError,如果检测到任何错误,它就会断言,因为这意味着存在错误。在我的产品上,这是默认启用的,在另一个产品上,它必须明确启用。这些已经存在于我工作多年的产品代码库中,我们看到它们会导致性能下降,在许多平台上通常在25%左右。我们认为这是为及早发现错误