フラグメント シェーダー内から 3D テクスチャにデータを書き込んでいますが、そのデータをシステム メモリに非同期で読み戻す必要があります。バッファ オブジェクトへのパッキング操作を非同期的に開始する唯一の手段はglReadPixels()
、NULL
ポインタを使用して呼び出すことのようです。しかし、この関数は、読み返す領域を定義する四角形を渡す必要があります。PBO を使用するときにこれらのパラメーターが無視されるかどうかはわかりませんが、そうではないと思います。この場合、3D テクスチャ全体を取得するために、この関数に何を渡せばよいかわかりません。個々のスライスを読み戻さなければならない場合でも (これはばかげた IMO のようなものです)、どのスライスから読み取るかを OpenGL と通信する方法がわかりません。何か不足していますか?
ところで、すべてのスライスに個別の 2D テクスチャを使用することもできますが、間違っていなければ (3D-) ミップマッピングが台無しになります。結果の 3D テクスチャで関心のある領域を効率的に見つけるために、3D ミップマップを使用したいと考えました。
PS 最適化されていないタグで申し訳ありません。新しいタグを作成することは許可されていないため、以前は誰も 3D テクスチャについて質問していなかったようです...