为什么解开FBO纹理会清除纹理?

时间:2011-12-23 22:27:39

标签: opengl fbo

我在渲染到纹理操作时遇到了一些麻烦。我创建了一个FBO,附加了一个纹理,渲染它,一切都很好,但是当我尝试通过再次调用glFramebufferTexture2DEXT来更改附加纹理时,无论是0还是新句柄,我附加了纹理变为空白(所有像素值都重置为(0,0,0,0))。

The documentation并没有说这应该发生,这对我来说有点麻烦,因为我需要保留这个纹理中的信息。有谁知道为什么会这样,以及如何预防或解决它?

1 个答案:

答案 0 :(得分:0)

遇到了几乎相同的情况。最终解决方案是在创建纹理时,必须确保设置TexParameters。

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

根据multi-taskable,GL_TEXTURE_MIN_FILTER默认为GL_NEAREST_MIPMAP_LINEAR,但我们没有进行映射。我不确定为什么会导致纹理看起来被删除,但这就是我们修复它的方法。