【发布时间】:2019-02-11 12:41:49
【问题描述】:
所以,这就是问题所在。我有一个带有 8 个渲染缓冲区的 FBO,我在延迟渲染管道中使用它们。然后我添加了另一个渲染缓冲区,现在我得到了一个 GLError。
GLError(
err = 1282,
description = b'invalid operation',
baseOperation = glFramebufferTexture2D,
cArguments = (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT8, GL_TEXTURE_2D, 12, 0,)
代码应该没问题,因为我刚刚从之前使用的渲染缓冲区中复制了它。
glMyRenderBuffer = glGenTextures(1)
glBindTexture(GL_TEXTURE_2D, glMyRenderBuffer)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB16F, self.width, self.height, 0, GL_RGB, GL_FLOAT, None)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST)
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT8, GL_TEXTURE_2D, glMyRenderBuffer, 0)
glGenerateMipmap(GL_TEXTURE_2D)
我在这一行得到错误
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT8, GL_TEXTURE_2D, glMyRenderBuffer, 0)
它看起来更像是某种我不知道的 OpenGL 限制。
我也有一个奇怪的堆栈 - Linux + GLFW + PyOpenGL 这也可能导致这个问题。
我很乐意在这一点上提出任何建议。
【问题讨论】:
标签: opengl pyopengl fbo deferred-rendering