私が間違っている場所を教えてください。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);