在我的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
答案 0 :(得分:0)
在OpenGL 3 documentation中,我发现了以下内容:
如果将零绑定到GL_ARRAY_BUFFER缓冲区对象绑定点并且指针参数不为NULL,则会生成GL_INVALID_OPERATION。 (注意:在核心上下文中,不再允许将glVertexAttribPointer和glDrawArrays指针传递到主内存中的网格数据的旧方法。您必须创建一个Vertex Buffer Object并用网格数据填充它。)
如果没有绑定顶点数组对象,则会在核心上下文中生成GL_INVALID_OPERATION。
不确定所使用的OpenGL是什么版本。也许值得检查这是否也是您的情况。