ARB_occlusion_query用法导致OpenGL出现“无效枚举”错误

时间:2012-09-24 22:08:52

标签: c++ opengl

我目前正在开发一个项目,我正在使用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是unsigned int数组,大小为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的情况下尝试过但当然没有变化,同样的事情仍在抱怨无效的枚举。

0 个答案:

没有答案