4

私は三角形のベクトル配列を持っています。これは基本的に、ビルボードする必要のある正方形の束で構成されています。次のようなもの

GLfloat vertexpositions[60 * 3]; 
// [x,y,z] * 6 for each square, and there are 10 squares

その後glDrawArray、適切な引数を使用して、合計10個の正方形を描画します。

同じ頂点配列に存在するこれらすべてのポリゴンを個別にビルボードできるシェーダープログラムを作成することは可能ですか?

4

3 に答える 3

1

2つのアプローチがあります。ポイントスプライトを使用するか、変換を連結した後で回転を「元に戻す」。ビルボードでは、平行移動は必要ですが、回転は必要ありません。

最終的なワールドマトリックスMをユニフォームとして頂点シェーダーに渡す場合、次のようになります。

M[0][0] = M[1][1] = M[2][2] = 1.0

せん断が行われないと仮定して、回転を元に戻します。または、M[0-3][3]からその並進ベクトルを単純に抽出することもできます。

于 2010-08-28T17:40:50.747 に答える
1

ジオメトリシェーダーを使用して、プリミティブごとの処理を実行できます。

于 2010-08-28T15:35:33.040 に答える
0

少なくとも、各看板の中心位置を保存する必要があります。次に、ジオメトリシェーダーを使用して頂点を生成できます。または、各中心位置を基準にして頂点を格納し、頂点シェーダーで頂点を変換することもできます。

于 2013-12-18T02:19:18.070 に答える