0

スペースを埋めるためにできるだけ多くのピラミッドを描きたいです。ピラミッドを 1 つ描いたり、色を変えたりできますが、今は、画面いっぱいにたくさんのピラミッドを描きたいと思っています。頂点とインデックスの単一セットを使用したい。色情報を持つ頂点とインデックスは次のとおりです。

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でのみサポートされています。そこでは、頂点とインデックスの1つのセットを言ったように、それらの多くのインスタンスを描画するためにglコマンドを発行します。フラグメント シェーダーには、組み込みの変数 "gl_InstanceID" があり、これを使用して現在のインスタンスを確認できます。

NV_draw_instanced など、OpenGL ES 2.0 でのインスタンス化を可能にするベンダー固有の拡張機能がいくつかありますが、これも特定のベンダーでしか機能しません。

于 2013-05-07T13:40:55.083 に答える