是否可以隐藏OpenGL窗口并且渲染仍在运行?我使用的glutHideWindow永远不会触发显示功能。
如果不可能,程序中是否可以更改当前窗口的焦点?我想运行opengl程序,但我不需要那个窗口。实际上,我想使用另一个程序中每个帧更新opengl的帧缓冲区。但是在两个程序之间切换总是很烦人。 (他们都有窗口)
答案 0 :(得分:5)
对于问题的两个部分,是否可以隐藏OpenGL窗口并且渲染仍在运行?
是和否。
如果隐藏窗口,窗口视口的所有像素在渲染时都将无法通过像素所有权测试。因此,您无法使用隐藏窗口作为OpenGL进行操作的绘图。
你需要的是一个可以抽取的屏幕外绘图。
现代变体是帧缓冲对象(FBO),您可以在常规OpenGL上下文中创建,甚至可以在隐藏窗口上工作。 FBO采用一些可绘制的附件(渲染缓冲区,纹理),并允许OpenGL将这些附件绘制到窗口。
较旧的方法是PBuffers,也受到广泛支持,但不像FBO那样容易使用。
请注意,如果要在Linux / X11上执行屏幕外渲染,X服务器必须处于活动状态,即拥有VT,以便GPU实际处理命令。因此,您不能只在“后台”启动X服务器,而是让另一台X服务器使用显示设备。
答案 1 :(得分:0)
创建窗口后,您可以使用glutHideWindow()
离开屏幕。然后你仍然渲染为正常,并使用glReadPixels
回读并获取缓冲区以便以后使用它。