是否可以隐藏OpenGL窗口,并且渲染仍在运行?我用的是glutHideWindow,它永远不会触发显示功能。
如果这是不可能的,是否可以在程序中改变当前窗口的焦点?我想运行opengl程序,但我不需要那个窗口。实际上,我想使用opengl在另一个程序中的每一帧更新的帧缓冲区。但是在两个程序之间切换总是很烦人的。(它们都有窗口)
发布于 2013-05-07 01:50:58
是否可以隐藏OpenGL窗口并且渲染仍在运行?
对问题的两个部分都是或不是。
如果隐藏窗口,则渲染时窗口视口的所有像素都将无法通过像素所有权测试。因此,您不能将隐藏窗口用作OpenGL操作的可绘制窗口。
你需要的是一个屏幕外的绘图工具。
最新的变体是Framebuffer对象(FBO),它可以在常规的OpenGL上下文中创建,甚至可以在隐藏窗口上工作。FBO接受一些可绘制的附件(渲染缓冲区、纹理),并允许OpenGL绘制到这些附件,而不是绘制到窗口。
一种较旧的方法是PBuffers,也得到广泛支持,但不像FBO那样易于使用。
请注意,如果要在Linux/X11上执行屏幕外渲染,则X服务器必须处于活动状态,即拥有VT,以便GPU实际处理命令。因此,您不能“在后台”启动一台X服务器,而是让另一台X服务器使用显示设备。
发布于 2017-08-18 09:35:07
创建窗口后,您可以使用glutHideWindow()将其移出屏幕。然后,您仍然呈现为nomal,并使用glReadPixels读回并获取buffer以便稍后使用它。
https://stackoverflow.com/questions/16403815
复制相似问题