OpenGL GL_LINE_STRIP 在 glEnd 后出现错误 1281(无效值)
我对这段简单的代码到底哪里出错一点头绪都没有。这个函数是用来在Python和ctypes中使用的。
extern "C" void add_lines(bool antialias,GLdouble coordinates[][2],int array_size,GLdouble w,GLdouble r,GLdouble g, GLdouble b,GLdouble a){
glDisable(GL_TEXTURE_2D);
if (antialias){
glEnable(GL_LINE_SMOOTH); //Enable line smoothing.
}
glColor4d(r,g,b,a);
glLineWidth(w);
glBegin(GL_LINE_STRIP);
for (int x = 0; x < array_size; x++) {
glVertex2d(coordinates[x][0],coordinates[x][1]);
}
glEnd();
std::cout << glGetError();
if (antialias){
glDisable(GL_LINE_SMOOTH); //Disable line smoothing.
}
glEnable(GL_TEXTURE_2D);
}
每次运行 std::cout << glGetError(); 都会输出1281。
谢谢你。
2 个回答
0
你确定这个错误不是在glEnd之前就发生了吗?glGetError会报告最后一个OpenGL错误,而这个错误可能是在程序执行的早些时候就产生的。
4
glGetError()
是一个“粘性”的函数:一旦某个函数设置了错误,它就会一直保持这个错误值,直到你调用 glGetError()
。所以,错误很可能是在别的地方引起的。你可以在进入函数时检查 glGetError()
的值,然后在每次函数调用后再检查一次,这样就能找到错误是在哪个地方被设置的。