5

GPUでパストレーサーを実行していますが、GPUグローバルメモリでピクセルデータ(float3の配列)のトレース結果を取得しました。配列を画面に表示するには、配列をCPUメモリにコピーします。 OpenGLを呼び出すglTexImage2D

glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, pixelArray);

次に、テクスチャを表示します。pixelArray表示するピクセルデータ配列です。GPUはレンダリングプロセス全体を管理するデバイスであるため、pixelArrayGPUからCPUにデータをコピーせずに画面に表示する方法はありますか?

4

2 に答える 2

2

CUDA OpenGLグラフィックス相互運用機能を使用して、OpenGLテクスチャをCUDAグローバルメモリとしてマップします。データをテクスチャに直接書き込むか、cudaMemcpy2Dを使用します。

于 2013-03-27T10:53:52.130 に答える
1

これは、GPUのグローバルメモリにデータが存在する画像をレンダリングするために私が一度作成した関数です。それを実行するには、CUDAとともにfreeglutとが必要になります。glew現在、Windowsでのみ動作します。

私はまだこの関数を使用してGPUイメージをレンダリングしています。電話ShowRawImageするだけで完了です。

それが持っている唯一のオーバーヘッドは、グローバルメモリからOpenGLデバイスバッファへのメモリコピーです。ただし、デバイス間でコピーするため、より優れています。

于 2013-03-27T06:56:51.790 に答える