2

デフォルトのメッシュ頂点構築では、これを行います。

//v = vertex, p = position, c = color
buffer = { v0 , p0, c0,
           v1 , p0, c0,
           v2 , p0, c0  };

そして、三角形があります。しかし、私は次のような明白な属性を再利用したいと思います。

//p and c are the same for all vertexes
buffer = { v0, p0, c0 ,
           v1, 
           v2 };

シェーダーで均一な値を使用してこれを行うことができますが、同じバッファーで異なる位置にある何千もの三角形をレンダリングします。

buffer = { v0, p0, c0 ,
           v1, 
           v2,
           v3, p1, c1,
           v4,
           v5, 
           v6, p2, c2,
           ...};

今のところ私の解決策は次のとおりです。

1)最初の例のように、各頂点の属性のコピーを送信します(送信したくないが、最善の解決策である可能性があります)。

2)インデックス属性(検索用)と位置/色の均一配列を送信します(均一サイズ制限の問題?)

3)最善の解決策は?

4

2 に答える 2

3
//p and c are the same for all vertexes

いいえそうではありません。あなたの場合、頂点はv、p、cの組み合わせ全体です。それらの 1 つを変更すると、まったく異なる頂点が得られます。よくある誤解ですが、それが機能する方法です

于 2013-02-08T11:00:45.090 に答える
2

古いハードウェアを使用しておらず、頂点メモリがそれほど重要ではないと仮定すると、データをコピーして、各頂点に属性の完全なセットを保持するだけです。それは確かに遅くなりません。

このような方法でデータを「再利用」すると、通常、パフォーマンスが低下します。これは、GPU がデータ アクセスを最適化できないためです。代わりに、やりたい複雑なことをしなければなりません。

于 2013-02-08T11:04:19.513 に答える