2017-04-06 11 views
0

GPUでヒストグラムを計算できるプログラムを開発しています。私はOpenGLを使ってコードを書いています。最初のステップで、Iは、配列(arr_image)に画素(RGB)の値をロードし、頂点バッファ(vbo)にアップロード:テクスチャ2D(GL_TEXTURE_2D)から配列バッファ(GL_ARRAY_BUFFER)にデータをコピーすることはできますか?

GLuint vbo; 
glGenBuffers(1, &vbo); 
glBindBuffer(GL_ARRAY_BUFFER, vbo); 

GLuint num_input_data = width * height; 

/* Upload data */ 
glBufferData(GL_ARRAY_BUFFER, num_input_data * sizeof(float) * 3, arr_image, GL_STATIC_DRAW); 

そして、それは働いて、私は、画像のヒストグラムを計算することができます。

今は、テクスチャ(GL_TEXTURE_2D)(前の手順の結果)のデータを配列バッファ(GL_ARRAY_BUFFER)にロードします。出来ますか?

答えて

2

私はあなたの全体的なアプローチが本当に行くための最善の方法であるかどうかわからないんだけど、私はここだけ、あなたの特定の質問に対処するつもりです:

OpenGLでバッファオブジェクトは、すべてのバッファの標的に結合することができます。テクスチャのピクセルデータをバッファオブジェクトにコピーするには、バッファをGL_PIXEL_PACK_BUFFERにバインドすることができます。これは、Pixel Buffer Object (PBO)として使用することを意味します。 PBOがバインドされると、GLからピクセルデータを読み戻す操作は、そのデータをPBOに書き込みます。したがって、glGetTexImageコールを発行することができます。 VBOの場合と同様に、これらの呼び出しのpixelsポインタはクライアントメモリアドレスではなく、PBOへのオフセットとして解釈されます。

このバッファをGL_ARRAY_BUFFERターゲットにバインドし、頂点データのソースとして使用できます。

+0

ありがとうございます。それは働いている。 –

関連する問題