0

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

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

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

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

4

2 回答 2

0

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

就是这样。

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

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

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

于 2010-10-04T11:15:36.390 回答
0

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

于 2010-10-05T20:20:39.590 回答