Android ndk GPU;opengles2.0;读/写数据;NDK;Tegra2;

Android ndk GPU;opengles2.0;读/写数据;NDK;Tegra2;,android-ndk,opengl-es-2.0,shader,Android Ndk,Opengl Es 2.0,Shader,你能告诉我哪里出错吗 任务很简单。我尝试在GPU内存中创建缓冲区,将数据写入其中并从中读取。 代码来做这件事见下文 执行代码时,glCheckFramebufferStatus返回值0x8D40(gl2.h中的常量GL_FRAMEBUFFER)和out buffer中的值当然不会更改 我能理解我做什么是违法的,为什么不起作用。是否有必要为编译/链接使用任何特殊标志? 有什么想法吗 使用:摩托罗拉手机基于NVIDIA NDK的处理器Tegra2,libGLES2.so。该项目由NDK编制 谢谢 G

你能告诉我哪里出错吗

任务很简单。我尝试在GPU内存中创建缓冲区,将数据写入其中并从中读取。 代码来做这件事见下文

执行代码时,glCheckFramebufferStatus返回值0x8D40(gl2.h中的常量GL_FRAMEBUFFER)和out buffer中的值当然不会更改

我能理解我做什么是违法的,为什么不起作用。是否有必要为编译/链接使用任何特殊标志? 有什么想法吗

使用:摩托罗拉手机基于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);

我在那里没有看到任何实际的绘画调用

在调用glTexSubImage2D之前,看起来您正在设置渲染到纹理。一旦你点击了glTexSubImage2D调用,你想做什么就变得不清楚了。为了填充绑定的帧缓冲区,可能会在其中的某个地方出现渲染调用。如果尚未渲染到帧缓冲区,则在绑定到帧缓冲区的纹理中不会看到任何更改