0

我想画尽可能多的金字塔来填满空间。我可以画一个金字塔,改变它的颜色等等。但是,现在,我想画很多可以填满屏幕的金字塔。我想使用一组顶点和索引。带有颜色信息的顶点和索引如下:

const Vertex Vertices [] = {
{{-1, -1, -1}, {1, 0, 0, 1}},
{{1, -1, -1}, {1, 0, 0, 1}},
{{1, -1, 1}, {1, 0, 0, 1}},
{{-1, -1, 1}, {1, 0, 0, 1}},
{{0, 1, 0}, {1, 0, 0, 1}}
};

const GLubyte Indices[] = {
2, 4, 3,
1, 4, 2,
0, 4, 1,
4, 0, 3
};

任何人都可以帮助我编写代码,因为我知道我在做一些错误。

4

1 回答 1

0

在 OpenGL ES 2.0 中,您可以做到这一点的唯一方法就是在屏幕上的不同位置重新渲染金字塔。您所得到的称为“实例化”,它仅在 OpenGL ES 3.0 中受支持,正如您所说的那样,您将拥有一组顶点和索引,但您会发出一个 gl 命令来绘制它们的许多实例,一直在片段着色器中,您将有一个内置变量“gl_InstanceID”,您可以使用它来告诉您当前所在的实例。

有一些特定于供应商的扩展允许您在 OpenGL ES 2.0 中进行实例化,例如 NV_draw_instanced,但同样只适用于特定供应商

于 2013-05-07T13:40:55.083 回答