OpenGL GL_LINE_STRIP 在 glEnd 后出现错误 1281(无效值)

1 投票
2 回答
5209 浏览
提问于 2025-04-15 23:17

我对这段简单的代码到底哪里出错一点头绪都没有。这个函数是用来在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() 的值,然后在每次函数调用后再检查一次,这样就能找到错误是在哪个地方被设置的。

撰写回答