是否可以隐藏 OpenGL 窗口并且渲染仍在运行?我使用永远不会触发显示功能的 glutHideWindow。
如果不行,是否可以在程序中改变当前窗口的焦点?我想运行 opengl 程序,但我不需要那个窗口。事实上,我想在另一个程序中使用 opengl 在每一帧更新的帧缓冲区。但是在两个程序之间切换总是很烦人。 (他们都有窗口)
最佳答案
Is it possible to hide OpenGL window and the rendering are still running?
对问题的两个部分是和否。
如果您隐藏一个窗口,则该窗口视口(viewport)的所有像素在渲染时都将无法通过像素所有权测试。因此,您不能将隐藏窗口用作 OpenGL 操作的可绘制对象。
您需要的是一个屏幕外可绘制对象。
现代变体是帧缓冲对象 (FBO),您可以在常规 OpenGL 上下文中创建它,它甚至可以在隐藏窗口上工作。 FBO 使用一些可绘制附件(渲染缓冲区、纹理)并允许 OpenGL 绘制到这些附件而不是窗口。
一种较旧的方法是 PBuffers,也得到广泛支持,但不如 FBO 易于使用。
请注意,如果您想在 Linux/X11 上执行离屏渲染,X 服务器必须处于事件状态,即拥有 VT,以便 GPU 实际处理命令。因此,您不能只是“在后台”启动一个 X 服务器,而是让另一个 X 服务器使用显示设备。
关于opengl - 隐藏 GLUT 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403815/