[英]How to draw cube without indices?OpenGL ES 2.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);
但是事实证明,有些奇怪的东西,但不是立方体
首先检查您的glDrawPrimatives调用,您是否正在使用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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.