1

我目前正在开发一个使用 ARB_occlusion_query 扩展的项目。我已经正确注册了扩展,我可以生成查询,然后我启动一个并在渲染后调用 EndQuery 函数,但这似乎给了我“无效枚举”的错误。我在这里检查了 speq: http ://www.opengl.org/registry/specs/ARB/occlusion_query.txt

我按如下方式调用 EndQueries:

glEndQuery( GL_SAMPLES_PASSED_ARB );

所有这些似乎都是有效的,但它一直给我一个错误代码,指出“无效枚举数”,错误代码 1280。

我一直在为我所做的每个 OpenGL 调用添加错误检查,以确保错误不是来自其他任何地方,并且我已将其隔离到本节。我生成查询如下:

glGenQueries( size, (GLuint*)m_QueryID);

其中 size 是(目前)硬编码值 10,m_QueryID 是一个无符号整数数组,大小再次为 10。

唯一似乎出错的地方是 glEndQuery 调用。作为回报,它给了我“无效的枚举数”。所有其他调用,例如获取结果、开始查询并最终删除它们都很好。

我的循环如下:

glBeginQuery( GL_SAMPLES_PASSED_ARB, m_QueryID[0] ); 
*render some models here*
glEndQuery( GL_SAMPLES_PASSED_ARB );

在那之后我会得到结果,因为我在 glEndQuery 调用中遇到错误,所以我现在什么都不做。

根据 speq 中的错误代码,它说:

如果目标不是 GL_SAMPLES_PASSED,则生成 GL_INVALID_ENUM。

这意味着我没有在那里传递 GL_SAMPLES_PASSED ,我就是这样。我什至尝试不使用 ARB,但当然没有改变,同样的事情仍然抱怨无效的枚举数。

4

0 回答 0