glVertexAttribPointer提供GL_INVALID_OPERATION(1282错误代码)

时间:2019-10-30 06:54:55

标签: c++ opengl glfw

在我的openGL代码glVertexAttribPointer中给出1282错误,我绑定了我的vbo。

要清除以前的错误

{
   while(glGetError()!=GL_NO_ERROR);
}

要检查错误

{
   while(GLenum error=glGetError())
  {
     std::cout<<error;
   }

}

我的主要功能


if(glewInit() !=GLEW_OK)
{
  std::cout<<"ERROR::MAIN.CPP::GLEW_INIT_FAILED"<<"\n";
  glfwTerminate();
}

> Vertex

glewInit();
float positions[6]={
    -0.5f,-0.5f,
    0.0f,0.5f,
     0.5f,-0.5f
  };
  GLuint buffer;
glGenBuffers(1,&buffer);
glBindBuffer(GL_ARRAY_BUFFER,buffer);//Binding BUffer
glBufferData(GL_ARRAY_BUFFER,sizeof(positions),positions,GL_STATIC_DRAW);
glEnableVertexAttribArray(0);

这是错误

GLError();
glVertexAttribPointer(0,2,GL_FLOAT,GL_FALSE,0,0);
GLcheck();

我正在使用Ubuntu,而我的OpenGL核心版本是4.6 Here Version Description

1 个答案:

答案 0 :(得分:0)

在OpenGL 3 documentation中,我发现了以下内容:

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

GL_INVALID_OPERATION。 (注意:在核心上下文中,不再允许将glVertexAttribPointer和glDrawArrays指针传递到主内存中的网格数据的旧方法。您必须创建一个Vertex Buffer Object并用网格数据填充它。)

     如果没有绑定顶点数组对象,则会在核心上下文中生成

GL_INVALID_OPERATION。

不确定所使用的OpenGL是什么版本。也许值得检查这是否也是您的情况。