OpenGL中出现奇怪的GL_INVALID_OPERATION错误

时间:2013-08-14 14:09:56

标签: 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

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

  

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

这是休息信息。

1 个答案:

答案 0 :(得分:6)

GL_INVALID_OPERATION生成的glVertexAttribPointer()错误:

    如果尺寸为GL_INVALID_OPERATION且类型不是,则会生成
  1. GL_BGRA GL_UNSIGNED_BYTEGL_INT_2_10_10_10_REVGL_UNSIGNED_INT_2_10_10_10_REV

  2. 如果类型为GL_INVALID_OPERATION,则会生成
  3. GL_INT_2_10_10_10_REVGL_UNSIGNED_INT_2_10_10_10_REV且尺寸不是4或GL_BGRA

  4. 如果type为,则生成
  5. GL_INVALID_OPERATION GL_UNSIGNED_INT_10F_11F_11F_REV且尺寸不是3。

  6. GL_INVALID_OPERATIONglVertexAttribPointer生成(如果大小) 是GL_BGRA,noramlized是GL_FALSE

  7. 如果零被绑定,则生成
  8. GL_INVALID_OPERATION GL_ARRAY_BUFFER缓冲区对象绑定点和指针参数 不是NULL

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