2

MRI スキャンがあり、ポリゴン化せずにさまざまな角度からサーフェスをレンダリングするために、iOS の OpenGL でリアルタイム レイキャスティングを実行したいと考えています。実際、レンダリングによって生成された深度マップのみに関心があります。

アプリストアでこれの例をいくつか見たので、可能だと確信しています(例:ImageVis3d)。glTexImage3D を使用してレンダリングを実行できますか? iOS でこの機能を使用するための適切なオンライン リソースはありますか? iOS での glTexImage3D の使用を示す GitHub プロジェクトまたは同様のものがありますか?

2D または 3D テクスチャが OpenGL ES メモリに存在すると仮定すると、フラグメント シェーダを使用して同じメモリに書き込み、それを CPU にコピーせずに再レンダリングできますか? フラグメント シェーダーを使用してボリュームを変形できるスカルプト シナリオを想像しています。

4

1 に答える 1

1

「glTexImage3D を使用してレンダリングを実行できますか?」の意味がわかりません。glTexImage3D は、3D テクスチャ データをテクスチャ バッファ オブジェクトにロードするために使用されます。シェーダーで同じメモリを読み書きすることはできません (ロックの問題が発生します)。ただし、できることはダブルバッファリングです。

texture1 から読み取って texture2 に書き込み、次のフレームの前にテクスチャのバインディングを交換して、texture2 から読み取り、texture1 に書き込むようにします。

明確にするために:フラグメントシェーダーで書き込み操作を実行したい場合(つまり、投影されたプリミティブの各フラグメントの値を書き込みたい場合)、FBOを使用してテクスチャにレンダリングします(これはあなたが探しています)。

ただし、頂点ごとに値を書き込むだけの場合、つまり頂点シェーダーの出力値をキャプチャする場合は、変換フィードバックを使用します。

于 2015-06-18T08:58:40.893 に答える