【问题标题】:Rendering OpenGL FBO Texture to GLXPixmap将 OpenGL FBO 纹理渲染到 GLXPixmap
【发布时间】:2009-12-31 21:43:22
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: opengl x11 render-to-texture glx


    【解决方案1】:

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

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

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

    【讨论】:

    • 唉,我检查了fbo状态,它是完整的。而且我正在使用一个宏来检查 glGetError ,该宏会报告是否有问题,并且没有投诉。但我会检查 glGetTexImage() 并尝试整理一个简单的示例 - 这本身可能会引导我找到解决方案。 :-)
    • 另一件简单的事情(不是想侮辱你——我已经犯过几次这个错误了!)是确保你始终使用 GL_TEXTURE_2D 和 GL_TEXTURE_RECTANGLE
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多