在OpenGL中错误地呈现Isocahedron

时间:2013-12-31 01:20:56

标签: opengl geometry vbo topology

我正在尝试使用c ++在OpenGL中绘制Isocahedron。我一直在靠近,但有一些失踪的面孔。我在多个站点上找到了3组不同的顶点/索引数据,通常是下面列出的数据

    float X = 0.525731112119133606f;
float Z = 0.850650808352039932f;
float temppts[12][3] = { { -X, 0.0f, Z }, { X, 0.0f, Z }, { -X, 0.0f, -Z }, { X, 0.0f, -Z },
{ 0.0f, Z, X }, { 0.0f, Z, -X }, { 0.0f, -Z, X }, { 0.0f, -Z, -X },
{ Z, X, 0.0f }, { -Z, X, 0.0f }, { Z, -X, 0.0f }, { -Z, -X, 0.0f } };  

GLushort tempindicies[60] = 
{ 1, 4, 0, 4, 9, 0, 4, 5, 9, 8, 5, 4, 1, 8, 4,
1, 10, 8, 10, 3, 8, 8, 3, 5, 3, 2, 5, 3, 7, 2,
3, 10, 7, 10, 6, 7, 6, 11, 7, 6, 0, 11, 6, 1, 0,
10, 1, 6, 11, 0, 9, 2, 11, 9, 5, 2, 9, 11, 2, 7};

此代码改编自一本书,多个网站显示它正常工作,虽然它们正在立即绘制,我正在使用vbo / ibo。任何人都可以指向我一些工作的顶点/索引数据或告诉我什么是错误的转移到缓冲对象?三个不同的数据都有不同的错误二十面体,每个都有不同的面孔。

我已经多次检查过我的bufferData调用,并尝试了几种绘图模式(TRIANGLES,TRIANGLE_STRIP ...),并且确信索引数据是错误的

1 个答案:

答案 0 :(得分:3)

我使用了网格坐标(顶点)和Platonic Solids的三角形连接(向下滚动到二十面体)。我已经粘贴了下面那个文件的屏幕截图。在调用glDrawElements时,我使用了GL_TRIANGLES。

二十面体Icosahedron

需要注意的另一件事是背面剔除。最初关闭背面剔除。

glDisable(GL_CULL_FACE);