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

时间:2010-05-28 13:57:25

标签: c++ python opengl ctypes

我不知道简单代码有什么问题。该函数用于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&lt;&lt; glGetError();每次都给出1281个。

三江源。

2 个答案:

答案 0 :(得分:4)

glGetError()很粘:一旦某个函数设置了错误,它将保持该错误值,直到您调用glGetError()。因此,错误很可能是在其他地方造成的。检查函数入口上的glGetError()的值,然后在每次函数调用之后找出它的设置位置。

答案 1 :(得分:0)

你确定在glEnd之前没有触发错误吗? glGetError将报告最后一次GL错误,这可能是程序执行早期引起的。