glVertexAttribPointer дает GL_INVALID_OPERATION (код ошибки 1282) - PullRequest
0 голосов
/ 30 октября 2019

в моем коде 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 Здесь Описание версии

1 Ответ

0 голосов
/ 30 октября 2019

В документации OpenGL 3 я обнаружил следующее:

GL_INVALID_OPERATION генерируется, если ноль привязан к точке привязки объекта буфера GL_ARRAY_BUFFER, а аргумент-указатель не равен NULL. (Примечание. В базовом контексте старый метод передачи указателей glVertexAttribPointer и glDrawArrays для данных сетки в основной памяти больше не разрешен. Необходимо создать объект буфера вершин и заполнить его данными сетки.)

GL_INVALID_OPERATION генерируется в основном контексте, если нет привязанного объекта Vertex Array.

Не уверен, какую версию OpenGL вы используете. Может быть, стоит проверить, относится ли это и к вашему делу.

...