0

パフォーマンスを向上させるために、丸みを帯びた三角形をレンダリングしようとしています。私が何を意味するかを説明するために、下の図を参照してください。

ここに画像の説明を入力

私はCPUで試しましたが、このアルゴリズムを何とかGPUに移す方法はありますか? フラグメント シェーダーを呼び出すメソッドのコードを変更できますか?

ところで、それができるとしたら、どのプログラミング言語に作り直す必要がありますか?

メモリ帯域幅が 20GB ~ 30GB の OpenGL 2.1 GPU を使用しています。

4

3 に答える 3

1

あなたが何をしているのか正確にはわかりませんが、少し疑わしいようです。シェーダーでこれらのカスタム計算の一部を実行して円または楕円をレンダリングしようとすると、実際にはパフォーマンスが低下する可能性があります。

最新の GPU ハードウェアは、1 秒間に数十億の三角形をプッシュできます。あなたはおそらくここで髪を分けています。

いずれにせよ、ジオメトリを「偽造」したい場合、これはあなたにとって興味深いかもしれません: https://alfonse.bitbucket.io/oldtut/Illumination/Tutorial%2013.html

于 2012-12-17T15:51:52.347 に答える
1

Charles Loop と Jim Blinn による論文Resolution Independent Curve Rendering using Programmable Graphics Hardware を読んでください。

短いバージョン: 曲線の効率的な内側/外側テストがあると仮定して、囲んでいる船体の形状を三角形としてレンダリングし、フラグメント シェーダーを使用して曲線の外側のピクセルを破棄します。

2 つ目は、アルゴリズムを GPU に転送しても自動的に高速化されないという Aeluned の懸念です。

于 2012-12-17T22:30:43.920 に答える
0
  1. OpenGL 2.1 では、ジオメトリ シェーダー (3.2+) がないため、GPU を忘れることができます。
  2. 湾曲した三角形によって凸形状のラスタライズ パフォーマンスを向上させることはできません
    • 凸多角形のラスタ化の複雑さは、同じ領域の三角形と同じです
    • 違いは次の点のみです。
    • 通過頂点数
      • メモリー転送
      • ジオメトリ シェーダーを使用すると、三角形の使用法が改善されます
    • 境界線の数
      • 塗りつぶしのための境界線のラスタライズ
      • 三角形を使用すると悪化します
      • (単一形状のポリゴンではなく、より多くの三角形を結合する必要があります)

したがって、パフォーマンスを向上させるためにこれを実装することはお勧めできません。

これを使用するために私が考えることができる唯一のことは、形状の手動生成を容易にすることです.

その場合、関数 glRoundedTriangle(....) を書くだけです。

  • 指定された入力パラメータから正しい頂点、色、法線、テクスチャ座標を生成します。

丸みを帯びた三角形のジオメトリ/形状および/または入力パラメーターを指定しなかったため、どのように見えるかは不明です (たとえば、3 つのポイント + 3 つの符号付き曲線半径?)

OpenGL のパフォーマンスを向上させるには、VBO/VAO を使用します

于 2013-10-14T10:32:05.740 に答える