2011-10-18 26 views
0

私が間違っている場所を教えてください。GPU; OpenGL ES 2.0;データの読み取り/書き込み。 NDK; Tegra2;

タスクは非常に簡単です。私は、GPUメモリにバッファを作成し、データを1つに書き込み、そこから読み込もうとします。 以下のコードを参照してください。

コードが実行されたときglCheckFramebufferStatus戻り値0x8D40(gl2.hの定数GL_FRAMEBUFFER)および出力バッファの値は変更されません。

私は違法な行為とそれがなぜ機能しないのか理解できます。コンパイル/リンクのための特別なフラグを使用する必要がありますか? アイデアがありますか?!?!?!

使用方法:電話機Motorolaは、NVIDIA NDKのプロセッサTegra2、libGLES2.soをベースにしています。プロジェクトはNDKによってコンパイルされます。

ありがとうございます!

GLuint xTexID; 
GLuint fb; 
GLenum status; 
const int _wight = 8, _height = 4; 

glGenTextures (1, &xTexID); 
glBindTexture(GL_TEXTURE_2D,xTexID); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, _wight, _height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); 

glGenFramebuffers(1,&fb); 
glBindFramebuffer(GL_FRAMEBUFFER,fb); 
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,xTexID,0); 

status = GL_FRAMEBUFFER_COMPLETE; 
if((status = glCheckFramebufferStatus(GL_FRAMEBUFFER)) != GL_FRAMEBUFFER_COMPLETE) { 
    printf("\r\nmyGL: CheckFramebufferStatus isn't COMPLETE (0x%08X)", status); 
//  exit(1); 
} 

glTexSubImage2D(GL_TEXTURE_2D,0,0,0,_wight,_height,GL_RGBA,GL_UNSIGNED_BYTE,data); 
glReadPixels(0, 0, _wight, _height,GL_RGBA,GL_UNSIGNED_BYTE,result); 

答えて

1

実際の描画呼び出しはありません。

glTexSubImage2Dまでは、テクスチャにレンダリングするように設定されているようです。一度glTexSubImage2Dコールを打つと、あなたがしようとしていることが不明確になります。あなたがバインドしたフレームバッファを埋めるために、そこにレンダリングコールが存在することを期待しています。フレームバッファにレンダリングしていない場合は、バインドしたテクスチャの変更は表示されません。

関連する問題