在 openGL 中渲染金字塔

Rendering pyramid in openGL

作为基本实践,我尝试在 openGL 中渲染金字塔,但顶点的位置未按预期渲染。我希望金字塔以世界坐标系为中心,我使用的点也是如此。

glm::vec3 pos0(-width/2, -height/2, width/2); //front left vertex
glm::vec3 pos1(width/2, -height/2, width/2); //front right vertex
glm::vec3 pos2(-width/2, -height/2, -width/2);//back left vertex
glm::vec3 pos3(width/2, -height/2, -width/2); //back right vertex
glm::vec3 pos4(0.0f, height/2, 0.0f); //top vertex

我是按GL_DRAW_TRIANGLES的顺序画金字塔的,正面是CCW。

indices.push_back(5); /////////// front face
indices.push_back(2);
indices.push_back(1);
indices.push_back(5); /////////// left face
indices.push_back(3);
indices.push_back(1); 
indices.push_back(5); /////////// back face
indices.push_back(3);
indices.push_back(4);
indices.push_back(5); /////////// right face
indices.push_back(4);
indices.push_back(2); 
indices.push_back(1); /////////// left bottom
indices.push_back(3);
indices.push_back(2); 
indices.push_back(2); /////////// right bottom
indices.push_back(3);
indices.push_back(4);

我希望前三个点是三角形的正面,但由于某些原因似乎并非如此。颜色不是预期的(每个顶点都有自己的颜色),而且金字塔顶部的高度似乎也不尽如人意。有人看到我的代码有问题吗?

OpenGL 索引从 0 开始。对于 5 个顶点,索引的范围必须从 0 到 4。