我在渲染到纹理操作时遇到了一些麻烦。我创建了一个 FBO,附加纹理,渲染它,一切都很好,但是当我尝试将附加纹理更改为 0 或新句柄时,glFramebufferTexture2DEXT
再次调用,我附加的纹理变为空白(所有像素值重置为 (0, 0, 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);
根据https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexParameter.xhtml, GL_TEXTURE_MIN_FILTER 默认为 GL_NEAREST_MIPMAP_LINEAR 但我们不是 mipmapping。我不确定为什么这会导致纹理看起来被擦除,但这就是我们为修复它所做的。