1

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

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

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

4

1 回答 1

1

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

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

于 2010-10-26T13:13:50.773 回答