パフォーマンスを向上させるために、丸みを帯びた三角形をレンダリングしようとしています。私が何を意味するかを説明するために、下の図を参照してください。
私はCPUで試しましたが、このアルゴリズムを何とかGPUに移す方法はありますか? フラグメント シェーダーを呼び出すメソッドのコードを変更できますか?
ところで、それができるとしたら、どのプログラミング言語に作り直す必要がありますか?
メモリ帯域幅が 20GB ~ 30GB の OpenGL 2.1 GPU を使用しています。
パフォーマンスを向上させるために、丸みを帯びた三角形をレンダリングしようとしています。私が何を意味するかを説明するために、下の図を参照してください。
私はCPUで試しましたが、このアルゴリズムを何とかGPUに移す方法はありますか? フラグメント シェーダーを呼び出すメソッドのコードを変更できますか?
ところで、それができるとしたら、どのプログラミング言語に作り直す必要がありますか?
メモリ帯域幅が 20GB ~ 30GB の OpenGL 2.1 GPU を使用しています。
あなたが何をしているのか正確にはわかりませんが、少し疑わしいようです。シェーダーでこれらのカスタム計算の一部を実行して円または楕円をレンダリングしようとすると、実際にはパフォーマンスが低下する可能性があります。
最新の GPU ハードウェアは、1 秒間に数十億の三角形をプッシュできます。あなたはおそらくここで髪を分けています。
いずれにせよ、ジオメトリを「偽造」したい場合、これはあなたにとって興味深いかもしれません: https://alfonse.bitbucket.io/oldtut/Illumination/Tutorial%2013.html
Charles Loop と Jim Blinn による論文Resolution Independent Curve Rendering using Programmable Graphics Hardware を読んでください。
短いバージョン: 曲線の効率的な内側/外側テストがあると仮定して、囲んでいる船体の形状を三角形としてレンダリングし、フラグメント シェーダーを使用して曲線の外側のピクセルを破棄します。
2 つ目は、アルゴリズムを GPU に転送しても自動的に高速化されないという Aeluned の懸念です。
したがって、パフォーマンスを向上させるためにこれを実装することはお勧めできません。
これを使用するために私が考えることができる唯一のことは、形状の手動生成を容易にすることです.
その場合、関数 glRoundedTriangle(....) を書くだけです。
丸みを帯びた三角形のジオメトリ/形状および/または入力パラメーターを指定しなかったため、どのように見えるかは不明です (たとえば、3 つのポイント + 3 つの符号付き曲線半径?)
OpenGL のパフォーマンスを向上させるには、VBO/VAO を使用します