0

C++ で OpenGL を使用して画像をレンダリングしており、結果の画像にアクセスしてさらに処理を行いたいと考えています。(私は画像をレンダリングしており、実際の画像のように見えるはずで、2 つの間のピクセル差を計算したいと考えています。)

ただし、これまでのところ、画像を画面にレンダリングするだけでしたが、画像をレンダリングしてから、描画された直接ピクセルにアクセスする方法がわかりません。画面に画像が表示されるかどうかは特に気にしません。必要なのは、CPU からアクセスできるメモリ領域に画像がレンダリングされることだけです。これどうやってやるの?

または、OpenGL のように見えるはずの画像を送信し、GPU でピクセルの差を計算することは可能でしょうか? どちらのオプションも私には問題ありませんが、速くできるほど良いです。(現在、毎秒約 100 フレームをレンダリングできますが、比較の方法はまだわかりません。)

4

2 に答える 2

2

はい、GPUで実行できます。2つの画像をテクスチャに配置します。2つのテクスチャでマルチテクスチャ化されたフレームを埋めるクワッドを描画し、テクスチャ座標を提供するようにしてください。フラグメントシェーダーを作成して、差を計算します。(コメント投稿者がプログラム可能なパイプラインを使用するかどうかを尋ねたとき、これが重要な理由の1つです。固定機能パイプラインのみを使用する場合、フラグメントシェーダーを作成するオプションはありません。)

于 2012-12-15T07:02:51.593 に答える
1

明らかな方法はglReadPixels、フレーム バッファ内のレンダリングされた結果をホスト メモリに読み取るために使用することです。

于 2012-12-15T06:40:24.247 に答える