OpenGL中出现奇怪的GL_INVALID_OPERATION错误

Unk*_*337 3 c++ opengl opengl-3

glClearColor( 1.0f, 1.0f, 1.0f, 1.0f );

AttachVertexShader( shader, "szescian_vs.glsl" );
AttachFragmentShader( shader, "szescian_fs.glsl" );
LinkProgram( shader );

glBindVertexArray( vertexVAO );

glGenBuffers( 1, &positionBuffer );

glGenBuffers( 1, &positionBuffer );
glBindBuffer( GL_ARRAY_BUFFER, positionBuffer );
glBufferData( GL_ARRAY_BUFFER, sizeof( position ), position, GL_STATIC_DRAW );
positionLoc = glGetAttribLocation( shader, "inPosition" );
glEnableVertexAttribArray ( positionLoc );
glVertexAttribPointer ( positionLoc, 3, GL_FLOAT, GL_FALSE, 0, ( void* ) 0 ); //here gDEBugger GL breaks on OpenGL Error
Run Code Online (Sandbox Code Playgroud)

这是我的初始化函数的一部分,我真的不知道为什么gDEBugger打破了它,有人可以为我解释一下吗?

中断原因OpenGL错误中断glVertexAttribPointer(0,3,GL_FLOAT,FALSE,0,0x00000000)错误代码
GL_INVALID_OPERATION错误描述在当前状态下不允许指定的操作.忽略违规功能,除了设置错误标志外没有任何副作用.*在执行功能前停止

这是休息信息.

Ser*_* K. 6

GL_INVALID_OPERATION产生的可能错误glVertexAttribPointer():

  1. GL_INVALID_OPERATION如果大小是GL_BGRA和类型不是 GL_UNSIGNED_BYTE,则生成GL_INT_2_10_10_10_REVGL_UNSIGNED_INT_2_10_10_10_REV.

  2. GL_INVALID_OPERATION如果type为GL_INT_2_10_10_10_REV 或者GL_UNSIGNED_INT_2_10_10_10_REV且size不是4或者,则生成GL_BGRA.

  3. GL_INVALID_OPERATION如果类型为GL_UNSIGNED_INT_10F_11F_11F_REV且大小不是3,则生成 .

  4. GL_INVALID_OPERATIONglVertexAttribPointerif GL_BGRA和noramlized 生成GL_FALSE.

  5. GL_INVALID_OPERATION如果零绑定到GL_ARRAY_BUFFER缓冲区对象绑定点而指针参数不绑定,则生成 NULL.

http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttribPointer.xml

  • 谢谢,我错过了'glGenVertexArrays(1,&vertexVAO);` (3认同)