0

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

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

4

1 回答 1

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);

根据https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexParameter.xhtml, GL_TEXTURE_MIN_FILTER 默认为 GL_NEAREST_MIPMAP_LINEAR 但我们不是 mipmapping。我不确定为什么这会导致纹理看起来被擦除,但这就是我们为修复它所做的。

于 2018-07-27T23:32:39.840 回答