2014-10-14 4 views
0

У меня возникла проблема, что первая вершина всегда нарисована на (0,0,0) независимо от того, где я хочу, чтобы она была (все остальные позиции верны). Я думаю, что это ошибка в моей функции «init». Вот позиции, которые я использую:Opengl: первая вершина всегда нарисована у источника

positions.push_back(glm::vec3(-0.5f , -0.5f , 0.0f)); 
positions.push_back(glm::vec3(0.0f , 0.5f , 0.0f)); 
positions.push_back(glm::vec3(0.5f , -0.5f , 0.0f)); 

Мой 'инициализации' Функция:

// generate buffers 
glGenVertexArrays(1, &this->VAO); 
glGenBuffers(1, &this->VBO); 
glGenBuffers(1, &this->EBO); 

glBindVertexArray(this->VAO); 

// fill buffers with data 
glBindBuffer(GL_ARRAY_BUFFER, this->VBO); 
glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec3) * this->positions.size(), &this->positions[0], GL_STATIC_DRAW); 

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, this->EBO); 
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint) * this->indices.size(), &this->indices[0], GL_STATIC_DRAW); 

// linking vertex attributes 
glEnableVertexAttribArray(0); 
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*)0); 

// unbind (only) VAO 
glBindVertexArray(0); 

И мой 'визуализации' функции (только для придания этому VAO, нет шейдеры):

glBindVertexArray(this->VAO); 
glDrawElements(GL_TRIANGLES, this->numElements, GL_UNSIGNED_INT, 0); 
glBindVertexArray(0); 

Я также попытался настроить значения 'stride' и 'pointer' в функции glVertexAttribPointer, но это просто не сработало.

+1

как вы заявляете позиции, может быть, вы поместили в нее 0 вершин по ошибке? –

+0

Не думайте так: std :: vector позиции; и после этого три push_backs – TomS

+0

Как вы заполняете «this-> index»? И есть ли «this-> numElements» число лиц? –

ответ

0

Хорошо благодаря Антону Анжелову Я нашел ошибку ... Индексы сетки должны начинаться с 0 (не от 1)! Еще раз спасибо за ваши комментарии

 Смежные вопросы

  • Нет связанных вопросов^_^