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

它是我的 init 函数的一部分,我真的不知道为什么 gDEBugger 会中断它,有人可以为我解释一下吗?

Break Reason OpenGL Error Breaked-on glVertexAttribPointer(0 , 3 , GL_FLOAT , FALSE , 0 , 0x00000000) 错误代码
GL_INVALID_OPERATION 错误描述 当前状态不允许指定的操作。有问题的函数被忽略,除了设置错误标志之外没有任何副作用。* 函数执行前停止

这是休息信息。

4

1 回答 1

7

可能GL_INVALID_OPERATION产生的错误glVertexAttribPointer()

  1. GL_INVALID_OPERATION如果 size 是GL_BGRA并且 type 不是 ,则生成GL_UNSIGNED_BYTEGL_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 orGL_UNSIGNED_INT_2_10_10_10_REV并且 size 不是 4 or ,则生成GL_BGRA

  3. GL_INVALID_OPERATION如果 type 是 GL_UNSIGNED_INT_10F_11F_11F_REV并且 size 不是 3,则生成。

  4. GL_INVALID_OPERATIONglVertexAttribPointerif size isGL_BGRA和 noramlized is生成GL_FALSE

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

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

于 2013-08-14T14:19:12.153 回答