내가 실수 한 부분을 보여줄 수 있습니까?GPU; OpenGL ES 2.0; 데이터 읽기/쓰기; NDK; Tegra2;
작업이 매우 간단합니다. 나는 GPU 메모리에 버퍼를 만들고 데이터를 하나에 쓰고 읽으려고한다. 아래 코드를 참조하십시오.
코드가 실행될 때 glCheckFramebufferStatus 반환 값 0x8D40 (gl2.h의 상수 GL_FRAMEBUFFER) 및 out 버퍼의 값은 변경되지 않습니다.
내가하는 불법 사항과 작동하지 않는 이유를 이해할 수 있습니다. 컴파일/링크를 위해 특별한 플래그를 사용할 필요가 있습니까? 아이디어가 있으십니까?!?!?!
사용 : 전화 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);