【问题标题】:glutHideWindow and glReadPixels on OS XOS X 上的 glutHideWindow 和 glReadPixels
【发布时间】:2010-10-26 12:01:23
【问题描述】:

在 MAC OS X 机器上,我使用 FBO、深度 RBO 和带有 freeglut 的纹理 RBO 将 3D 场景渲染到 FBO 并渲染到纹理。最后都使用标准的 glut 函数和 glutMainLoop。

我正在使用 glReadPixels 从 FBO 读取数据。我可以看到像素被正确读取。

但是,当我使用 glutHideWindow 隐藏 glut 窗口时,我发现由 glReadPixels 重新生成的整个缓冲区设置为清除颜色 (ff 00 00 00)。我没有改变其他任何东西。我认为隐藏窗口时根本不会渲染 FBO。我该如何改变?这是在 MAC OS X 上观察到的。如果您想查看代码,请告诉我。

【问题讨论】:

    标签: macos opengl osx-snow-leopard glut freeglut


    【解决方案1】:

    窗口不能被覆盖,否则缓冲区不会更新。解决方案是渲染到屏幕外缓冲区(如果您的卡支持它)。否则,将窗口保持在其他窗口之上,否则缓冲区将无效。

    编辑:这与窗口系统有关,与 opengl 无关

    【讨论】:

    • 渲染到屏幕外缓冲区的任何可用示例?
    • 另外,在这种情况下,如何在 OS X 中设置窗口系统以便更新?我正在使用过剩。
    • 对不起,我不知道 OS X,但不支持 linux。对于屏幕外渲染,这可能会有所帮助stackoverflow.com/questions/214437/… 如果您的卡支持 pbuffers,那么您可以使用它。
    • 使用 FBO 进行屏幕外渲染可以工作,但前提是显示窗口。 OSX 大师?
    • 其实跟OpenGL有关,叫“像素所有权测试”,在GL规范里有定义。
    猜你喜欢
    • 2014-01-16
    • 2010-10-09
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多