【问题标题】:opengl off screen renderingopengl 离屏渲染
【发布时间】:2011-04-20 16:41:57
【问题描述】:

我在 MAC OS X 10.6 上使用 opengl FBO 和 glut 进行屏幕外渲染。该程序涉及多个 3D 对象的移动。

该程序似乎运行良好,除了我需要包含一个选项,即屏幕外缓冲区内容不会交换到屏幕缓冲区。因此,您在屏幕上看不到任何内容。我想知道当屏幕上什么都看不到时程序是否在这种模式下正常工作 - 即 3D 运动等像往常一样正常工作。是否有一个实用程序可以在我的进程单独运行时读取屏幕外缓冲区并将其显示在屏幕上。

或者,还有其他方法可以实现这一目标吗?即在使用FBO渲染离屏时隐藏屏幕窗口。

感谢任何 cmets/建议。我希望我的问题很清楚。

【问题讨论】:

    标签: opengl glut freeglut


    【解决方案1】:

    gDEBugger for Mac 应该能够显示 FBO 内容而无需您付出额外的努力,至少 Windows 版本可以做到这一点。提供 7 天试用版。

    【讨论】:

    • 是否有任何可用于使用 glut/freeglut 进行屏幕外渲染的示例。我看到一个使用 openglut 但更喜欢使用 freeglut。有什么想法吗?
    • @John Qualis FBO 不依赖于您的 GUI 工具包。只需学习您选择的任何 FBO 教程,它就会起作用。
    【解决方案2】:

    我会将屏幕外缓冲区复制到共享内存中。然后,外部应用程序不断读取共享内存内容,更新纹理并将其显示在屏幕上。

    就是这样。

    我用过很多次,即使是离屏渲染,但我没有一个方便的例子。 :(

    我建议在共享内存的开头存储其他信息(宽度、高度、像素类型、增量整数,以了解图像是否从上次读取后发生了变化......)。 在此标头之后,存储您的应用程序生成的像素数据,其大小实际上取决于宽度、高度和像素大小。

    我还建议使用 glReadPixels 来存储像素数据,将映射的共享内存作为参数传递。远程应用程序可以使用该数据来更新纹理。

    【讨论】:

    • 很好的答案。您知道使用此技术的任何示例吗?欣赏它。
    • 让我试试这个。再次感谢。
    • 是否有任何可用于使用 glut/freeglut 进行屏幕外渲染的示例。我看到一个使用 openglut 但更喜欢使用 freeglut。有什么想法吗?
    猜你喜欢
    • 2018-06-11
    • 2010-09-17
    • 2014-07-28
    • 1970-01-01
    • 2014-01-12
    • 2018-01-17
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多