如何绘制立方体没有指标?opengles2.0



我想绘制立方体没有索引和使用VBO。我在网上找不到任何东西(教程,例子)。我试过的:

const GLfloat Vertices[] = {
    -1.0f, -1.0f, 1.0f, //Vertex 0
    1.0f, -1.0f, 1.0f,  //v1
    -1.0f, 1.0f, 1.0f,  //v2
    1.0f, 1.0f, 1.0f,   //v3
    1.0f, -1.0f, 1.0f,  //...
    1.0f, -1.0f, -1.0f,         
    1.0f, 1.0f, 1.0f,
    1.0f, 1.0f, -1.0f,
    1.0f, -1.0f, -1.0f,
    -1.0f, -1.0f, -1.0f,            
    1.0f, 1.0f, -1.0f,
    -1.0f, 1.0f, -1.0f,
    -1.0f, -1.0f, -1.0f,
    -1.0f, -1.0f, 1.0f,         
    -1.0f, 1.0f, -1.0f,
    -1.0f, 1.0f, 1.0f,
    -1.0f, -1.0f, -1.0f,
    1.0f, -1.0f, -1.0f,         
    -1.0f, -1.0f, 1.0f,
    1.0f, -1.0f, 1.0f,
    -1.0f, 1.0f, 1.0f,
    1.0f, 1.0f, 1.0f,           
    -1.0f, 1.0f, -1.0f,
    1.0f, 1.0f, -1.0f,
};

glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);
 glDrawArrays(GL_TRIANGLE_STRIP, 0, 24);

但结果很奇怪,但不是立方体

首先检查你的gldrawprimitives调用,你正在使用GL_QUADS作为你的绘制模式。

你的顶点很好。它们的顺序和位置都是正确的。

编辑:因为你不能使用四边形,你将不得不单独定义每个三角形,你的第一个块看起来像这样:

-1.0f, -1.0f, 1.0f, //v0
1.0f, -1.0f, 1.0f,  //v1
-1.0f, 1.0f, 1.0f,  //v2
-1.0f, 1.0f, 1.0f,  //v2
1.0f, -1.0f, 1.0f,  //v1
1.0f, 1.0f, 1.0f,   //v3

我强烈建议使用索引,如果你保持相同的顶点缓冲区作为你定义的,你可以设置你的索引如下:

byte indices[6 * 6];
int n = 0;
for(int i = 0; i < 4 * 6; i += 4)
{
   indices[n++] = i;
   indices[n++] = i + 1;
   indices[n++] = i + 2;
   indices[n++] = i + 2;
   indices[n++] = i + 1;
   indices[n++] = i + 3;
}

相关内容

  • 没有找到相关文章

最新更新