执行以下代码
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的信息
这里发生了什么?
答案 0 :(得分:1)
我没有仔细阅读glGetError,我忽略了glGetError的工作原理。它只报告自上次glGetError调用以来发生的所有错误,而不仅仅是gl函数调用后的状态。