glBindBuffer给出错误502 GL_INVALID_OPERATION

时间:2013-07-02 23:59:37

标签: opengl

执行以下代码

int object::draw(){

glBindBuffer(GL_ARRAY_BUFFER, vbobuffer);
if(myglError("glBindBuffer in object.draw")){
    //return 0;
}

glDrawArrays(GL_TRIANGLES, 0, buffer_size);
if(myglError("glDrawArrays in object.draw")){
    return 0;
}

return 1;
}

,其中

inline int myglError(const char* location) {
GLenum error = GL_NO_ERROR;
error = glGetError();
if (GL_NO_ERROR != error) {
    printf("GL Error %x encountered in %s.\n", error, location);
    //exit(-1);
    return 1;
}
return 0;
}

我得到了输出 在object.draw中的glBindBuffer中遇到GL错误502。

然而glDrawArrays仍然绘制三角形。

查看文档http://www.opengl.org/sdk/docs/man/xhtml/glBindBuffer.xml glBindBuffer可以返回GL_INVALID_ENUM或GL_INVALID_VALUE ...但没有关于glBindBuffer给出GL_INVALID_OPERATION的信息

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

我没有仔细阅读glGetError,我忽略了glGetError的工作原理。它只报告自上次glGetError调用以来发生的所有错误,而不仅仅是gl函数调用后的状态。