Macos OS X上的glutHideWindow和glReadPixels
在MAC OS X机器上,我使用FBO、深度RBO和纹理RBO以及freeglut将3D场景渲染到FBO,并进行纹理渲染。最后使用标准glut函数和glutMainLoop 我正在使用glReadPixels从FBO读取。我可以看到像素被正确读取Macos OS X上的glutHideWindow和glReadPixels,macos,opengl,osx-snow-leopard,glut,freeglut,Macos,Opengl,Osx Snow Leopard,Glut,Freeglut,在MAC OS X机器上,我使用FBO、深度RBO和纹理RBO以及freeglut将3D场景渲染到FBO,并进行纹理渲染。最后使用标准glut函数和glutMainLoop 我正在使用glReadPixels从FBO读取。我可以看到像素被正确读取 但是,当我使用glutHideWindow隐藏glut窗口时,我发现glReadPixels返回的整个缓冲区被设置为clear color(ff 00)。我没有改变其他任何事情。我认为当窗口被隐藏时,FBO根本没有被渲染到。我如何改变这个?这在MAC
但是,当我使用glutHideWindow隐藏glut窗口时,我发现glReadPixels返回的整个缓冲区被设置为clear color(ff 00)。我没有改变其他任何事情。我认为当窗口被隐藏时,FBO根本没有被渲染到。我如何改变这个?这在MAC OS X上被观察到。如果您想查看代码,请告诉我。窗口无法覆盖,或者缓冲区将不会更新。解决方案是渲染到屏幕外缓冲区(如果您的卡支持)。否则,请将窗口置于其他窗口之上,否则缓冲区将无效
编辑:这与窗口系统有关,而与opengl无关。窗口无法覆盖,或者缓冲区不会更新。解决方案是渲染到屏幕外缓冲区(如果您的卡支持)。否则,请将窗口置于其他窗口之上,否则缓冲区将无效
编辑:这与窗口系统有关,而与opengl无关任何可用的渲染到屏幕外缓冲区的示例?此外,在这种情况下,我如何在OS X中设置窗口系统以使其更新?我正在使用glut。对不起,我不知道OSX是否支持glut,但linux不支持。对于离屏渲染,如果您的卡支持PBuffer,这可能会有所帮助,然后您可以使用它。使用FBO的离屏渲染可以工作,但仅当显示窗口时。OSX专家?实际上它与OpenGL有关,它被称为“像素所有权测试”,在GL规范中定义。有没有可用的渲染到屏幕外缓冲区的示例?还有,在这种情况下,我如何在OSX中设置窗口系统,以便更新它?我正在使用glut。对不起,我不知道OSX是否支持glut,但linux不支持。对于离屏渲染,如果您的卡支持PBuffer,这可能会有所帮助,然后您可以使用它。使用FBO的离屏渲染可以工作,但仅当显示窗口时。OSX专家?实际上它与OpenGL有关,它被称为“像素所有权测试”,它在GL规范中定义。