我在MAC OS X 10.6上使用opengl FBO和过剩使用屏幕外渲染。该计划涉及多个3D物体的移动。
该程序似乎工作正常,但我需要包含一个选项,其中屏幕外缓冲区内容不会交换到屏幕缓冲区。因此,您在屏幕上看不到任何内容。我想知道程序是否正常工作,因为在屏幕上看不到任何内容时应该处于此模式 - 即3D运动等正常工作。是否有一个实用程序可以读取屏幕外缓冲区并在我的进程单独运行时在屏幕上显示它。
或者,还有其他方法可以实现这一目标吗?这是使用FBO在屏幕外渲染时隐藏屏幕窗口。
感谢任何意见/建议。我希望我的问题清楚。
答案 0 :(得分:0)
我会将屏幕外缓冲区复制到共享内存中。然后,外部应用程序连续读取共享内存内容,更新纹理并在屏幕上显示它。
就是这样。
即使屏幕外渲染,我也经常使用它,但我没有一个方便的例子。 :(
我建议在共享内存的开头存储附加信息(宽度,高度,像素类型,增量整数,以了解图像是否已从上次读取更改...)。 在此标题之后,存储应用程序生成的像素数据,其大小实际上取决于宽度,高度和像素大小。
我还建议使用glReadPixels存储像素数据,将映射的共享内存作为参数传递。远程应用程序可以使用该数据来更新纹理。
答案 1 :(得分:0)
gDEBugger for Mac应该能够显示FBO内容而无需额外的努力,至少Windows版本可以这样做。提供7天试用版。