0

GLES2.0 にはジオメトリ シェーダーがないため、頂点シェーダーだけを使用してシミュレートしたいと考えています。私の考えは次のようになります: x、y、z、サイズの変数があり、各頂点を 1 つ送信してから、どこかに保存します。6 番目の頂点の後、最後の 6 つの値 (x、y、z、サイズ、および必要に応じてさらに 2 つ) を使用して、それらから次の 6 つの頂点を構築します。例えば:

  • 頂点シェーダーの最初の呼び出しで、x 変数をどこかに保存し、gl_Position = (0,0,0)、gl_Color = (0,0,0,0) などを返します...
  • 2 回目の呼び出しで、y 変数をどこかに保存してから、上記と同じ方法で頂点を破棄します。これを 6 番目の頂点まで繰り返します。
  • 6 番目の頂点で、どこかから x、y、z、およびサイズの変数を取得し、それらを使用して正方形の左上の頂点を作成します。(gl_Position = (x-size/2, y-size/2, 0)... など..

問題は、この「どこか」が何であるかわからないことです。頂点シェーダー呼び出しで変数を保存して、次の呼び出しで使用する方法がわかりません。

TLDL: GLES2.0 で 5200 * (x, y, z, square_size) から 10400 の三角形を 1 回の描画呼び出しで作成したいのですが、方法についてのアイデアはありますが、実装方法がわかりません。

4

1 に答える 1

0

問題は、この「どこか」が何であるかわからないことです。頂点シェーダー呼び出しで変数を保存して、次の呼び出しで使用する方法がわかりません。

これはできません (これを行うには、頂点シェーダー ステージを超えた何かが必​​要です)。すべての頂点が、頂点シェーダーを介して GPU によって同時に処理されると単純に考えてください。これは、頂点ステージで作業するときに頭に入れておくべきモデルです。あなたが望んでいることをそのように行うことができない理由は明らかだと思います。

于 2013-09-09T14:17:15.203 に答える