我正在写一个关于opengl应用程序的问题。
GLenum err = 0;
glEnable( GL_DEPTH_TEST );
err = glGetError();
if ( err != GL_NO_ERROR )
printf( "Error: %s\n",glewGetErrorString( err ) );
上面的代码将未知错误打印到控制台,当我单步执行时,我得到了1280代码。我已经检查了glhnable的khron页面,并且枚举就在那里,那为什么会导致问题? 我查找了错误代码,这是一个无效的枚举,但这怎么可能?
答案 0 :(得分:0)
您确定错误来自glEnable(GL_DEPTH_TEST);
来电吗?
你可以试试这个:
PrintErrors(); // Test for previous error
glEnable(GL_DEPTH_TEST);
PrintErrors();
...
void PrintError() {
GLenum err;
for(;;) {
err = glGetError();
if (err == GL_NO_ERROR) break;
printf("Error: %s\n", glewGetErrorString(err));
}
}
答案 1 :(得分:0)
错误0x500 / 1280表示GL_INVALID_ENUM
,这意味着不允许函数调用中的一个枚举器。显然,GL_DEPTH_TEST
不应该发生这种情况,自从OpenGL 1.0以来glEnable
允许这种情况。以下是可能发生这种情况的所有可能原因:
GL_DEPTH_TEST
错误的价值。 GL_DEPTH_TEST
的值应为0x0B71。或者,它可能在glEnable
中放错了函数。要对此进行测试,您可以调试到库的初始化函数,或者可以使用glIntercept或类似的工具来查看正在调用的函数。