1

Sparce Voxel Octree (SVO) エンジンの作成を計画しており、openGL を使用して各小さな立方体をレンダリングするか、アセンブリと c で独自のレンダラーを作成するかで迷っています。後者を行う場合、画面にピクセルを描画する方法がわかりません(Mac、10.8を使用しています)。これには、どのグラフィックスコンテキスト/ウィンドウシステムが推奨される方法ですか (X ではありません。Mac の X には問題があります)。

PS エンジンは最低 50,000 個のキューブを描画できる必要があります (キューブの並列処理を支援するために opencl/cuda を使用します)。特別に設計されたレンダラーを使用して描画する方が効率的かどうかを知りたいだけです。

4

1 に答える 1

3

API

OpenGL は (ある意味で) 最も移植性の高いレンダリング API であり、少なくとも現在のグラフィックス ハードウェア機能を最新の状態に保つチャンスがありますが、これは定期的にフラストレーションのかなりの部分を生み出します. PC 用にコーディングする場合は、ほぼ同じ機能を提供する DirectX10/11 を使用できます。DirectX はドライバーのオーバーヘッドが少し少ないのに対し、OpenGL はステート マシンであり、プログラマーから多くのことを隠しています。「asm」によって glsl または hlsl シェーダーを作成することを意味しない限り、アセンブラーで同じことを行うことでフラストレーションが少なくなるのをどのように見ているのかわかりません:)

Svo

現在、GTX780 で 30 fps で 62.000 個のボクセル キューブをレンダリングする OpenGL SVO ビジュアライザーを作成しましたが、私のセットアップは最適ではありません。つまり、インスタンス化されたレンダリング、トライ ストリップ、クワッド、または送信のみを行うジオメトリシェーダー ベースのアプローチをまだ使用していません。ボックスの中心座標で、シェーダーで完全にビジュアルを生成します。OpenGL は、レンダリングを最適化する方法のスタック全体を提供しており、ハードウェア アクセラレーションを使用しています。

相互運用

openGL と openCL の間の相互運用性は簡単で、CUDA は openGL バッファとも非常によく統合されています。これらのセットアップは両方とも同じコード ベースで動作しています。3 番目の方法は、計算シェーダー (opengl 4.3+) を使用することです。そのため、キューブを処理するために openCL も CUDA も必要ありません。

svo を介してレイを送信する予定はありますか、それとも単にアウトラインを背面からカリングしてレンダリングするか、何か特別なことをする予定ですか?

于 2014-09-16T11:59:26.547 に答える