隐藏GLUT窗口

Yan*_* Li 1 opengl glut

是否可以隐藏OpenGL窗口并且渲染仍在运行?我使用glutHideWindow,它永远不会触发显示功能.

如果不可能,程序中是否可以更改当前窗口的焦点?我想运行opengl程序,但我不需要那个窗口.实际上,我想使用另一个程序中每个帧更新opengl的帧缓冲区.但是在两个程序之间切换总是很烦人.(他们都有窗户)

dat*_*olf 5

是否可以隐藏OpenGL窗口并且渲染仍在运行?

对问题的两个部分都是肯定的和否定的.

如果隐藏窗口,则窗口视口的所有像素在渲染时都将无法通过像素所有权测试.因此,您无法使用隐藏窗口作为OpenGL进行操作的可绘制窗口.

你需要的是一个可以绘制的屏幕外绘图.

现代变体是帧缓冲对象(FBO),您可以在常规OpenGL上下文中创建,甚至可以在隐藏窗口上工作.FBO采用一些可绘制的附件(渲染缓冲区,纹理)并允许OpenGL将这些附加到窗口.

较旧的方法是PBuffers,也得到广泛支持,但不像FBO那样容易使用.

请注意,如果要在Linux/X11上执行屏幕外渲染,X服务器必须处于活动状态,即拥有VT以便GPU实际处理命令.因此,您不能只在"后台"启动X服务器,而是让另一台X服务器使用显示设备.