Opengl:始终在原点绘制第一个顶点

时间:2014-10-14 11:11:46

标签: opengl vbo vao

我遇到的问题是,无论我想在哪里(所有其他位置都正确),第一个顶点总是在(0,0,0)绘制。我认为这是我的“初学者”中的一个错误。功能。 以下是我使用的职位:

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);

我的'#渲染' function(仅用于渲染VAO,无着色器):

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

我也试图调整“步幅”。和指针' < glVertexAttribPointer'中的值功能,但它只是没有工作。

1 个答案:

答案 0 :(得分:0)

好的,多亏了Anton Angelov,我发现了错误......网格的索引需要从0开始(而不是从1开始)!再次感谢您的意见