OpenGL ES glCheckFramebufferStatus返回0

时间:2013-08-27 05:53:32

标签: android opengl-es

我正在用原生代码编写Android OepnGL程序。

以下代码通过jni,普通调用调用,而不是在任何曲面视图中调用。

调用glCheckFramebufferStatus()时,状态始终为0.

GLuint textureA;
glEnable(GL_TEXTURE_2D);
glGenTextures(1, &textureA);
glBindTexture(GL_TEXTURE_2D, textureA);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA,
        GL_UNSIGNED_BYTE, NULL);

GLuint fboA;
glGenFramebuffers(1, &fboA);
glBindFramebuffer(GL_FRAMEBUFFER, fboA);

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
        textureA, 0);

GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if (status == GL_FRAMEBUFFER_COMPLETE) {
    LOGH("Single FBO setup successfully.");
} else {
    LOGH("Problem in setup FBO texture: %d .", status);
}
glBindFramebuffer(GL_FRAMEBUFFER, 0);

1 个答案:

答案 0 :(得分:2)

实际上问题不是因为fbo操作而是与opengl上下文有关。

我在Android中使用opengl es本机代码,我需要通过EGL库配置opengl上下文。

所以我需要正确准备上下文,以便创建fbo。