2

次のコードを実行する

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を返すことができます...しかし、GL_INVALID_OPERATIONを与えるglBindBufferに関する情報はありません

ここで何が起こっているのですか?

4

1 に答える 1

1

glGetError を注意深く読んでおらず、glGetError の仕組みを見落としていました。gl関数呼び出し後のステータスだけでなく、最後のglGetError呼び出し以降に発生したすべてのエラーを報告するだけです。

于 2013-07-03T12:32:22.077 に答える