1

我正在编写一些代码,旨在: 1. 使用 FBO 渲染成 OpenGL 纹理。2. 从 FBO 纹理绘制到附加到 X Pixmap 的 GLXPixmap。3. 将 X Pixmap 绘制到屏幕上的一个窗口。

第 3 步效果很好,如果我用普通的 OpenGL 绘图替换 FBO 纹理,第 2 步效果很好。

但是,如果我执行上述操作,至少使用我拥有的代码,它就行不通了。如果我给 GLXPixmap 一个彩色背景,然后执行 1-3,屏幕上的窗口会变成白色,但我绘制的其他任何内容都不会出现。

所以我希望有人可以提供提示,或者给我一些简单的示例代码。我为此获得的代码相当复杂,但如果需要,我可以尝试编写一个简单的示例版本以在此处发布以供审查。

4

1 回答 1

1

如果您的最后两个步骤有效,但没有使用您在第一步中创建的 FBO,则您可能错误地初始化了 FBO。需要检查的一些事项:

  • FBO“帧缓冲区完整”吗?glCheckFramebufferStatus( GL_FRAMEBUFFER_COMPLETE )在将所有纹理和/或渲染缓冲区附加到它之后检查使用。
  • 在渲染到 FBO 后(例如使用glGetTexImage),您是否有任何方法检查 FBO 以确定问题是写入 FBO 还是读取 FBO?
  • 您可能已经检查过了,但值得一问:是否glGetError()返回任何错误?

如果一切检查正确,然后发布一些骨架设置和渲染代码......当然,越不复杂越好 =)

于 2009-12-31T21:58:02.090 回答