6

簡単な GPGPU ベンチマークを作成しようとしています。データを頂点バッファー配列にロードするには、頂点シェーダーで計算を行い、データを読み戻します。出来ますか?これを SGX GPU で実行する予定です。
それを行う方法はありますか?変換、クリッピング、タイリング フェーズ、およびピクセル処理を実行したくありません。追加のオーバーヘッドが発生し、データが変更されます。

データを読み戻して CPU で調べることはできますか? とにかくopengl esにはありますか?

テクスチャを介してデータを送信し、いくつかの定数を掛けて別のフレーム バッファーに書き込むことにより、ピクセル シェーダーでも計算を行うことができます。しかし、どうすればそれを取り戻すことができますか?私は本当にそれを画面に表示したくありません。とにかくそれをすることはありますか?可能であれば、誰かが私にいくつかのチュートリアルを教えてもらえますか?

4

4 に答える 4

2
"...computation in the vertex shader, and read the data back. Is it possible? I am planning to run this on SGX GPUs."

SGX は Opengles 3.0 ではなく 2.0 をサポートしているため、PowerVR SGX は頂点シェーダー出力の読み取りをサポートしていません (OpenGL ES 2.0 仕様にはそのような機能は含まれていません)。

" can I read back the data and examine it in the CPU? is there anyway in opengl es?" フレームバッファ オブジェクトを使用し、glRead API を使用して同じものを読み取ることができます。ここで FrameBuffer オブジェクトについて読むことができます

参照: http://en.wikipedia.org/wiki/Framebuffer_Object 参照:ピクセル バッファー オブジェクト (PBO) を使用したフレーム バッファー オブジェクト (FBO) からのピクセル値の読み取り

GPGPU 計算を行っている場合は、OpenCL を使用することをお勧めします。SGX は OpenCL EP 1.1 をサポートします。

于 2014-04-07T10:04:54.267 に答える
1

OpenGL ES2 では頂点シェーダーからオフスクリーンへの書き込みはできませんが、ピクセル シェーダーから行うことができます。

最初にオフスクリーン バッファにレンダリングする必要があります。次に、それをテクスチャとして画面上の別のオブジェクトにレンダリングするか、通常の方法で readPixels を使用して読み戻すことができます。手順の簡単なリストはhttps://gist.github.com/prabindh/9201855にあります。

于 2014-04-07T13:23:08.130 に答える