opengl - 隐藏 GLUT 窗口

标签 opengl glut

是否可以隐藏 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/

相关文章:

c++ - 如何防止在 OpenGL Qt 中绑定(bind)随机纹理?

c++ - 读取文件,损坏的数据

python - 具有纹理的 PyOpenGL 球体

c - 如何启用两个对象的不同 GL_POSITION

c - OpenGL glutWireCube 可以工作,但 glutWireCylinder 不能。我究竟做错了什么?

c++ - 将浮点值传递给 glutBitmapString()?

c++ - 是否有任何适用于延迟着色的独立于顺序的透明技术?

c++ - 如何在xcode中链接glew

opengl - 了解 OpenGL 中的光照

c - glutBitmapCharacter() 不显示任何内容?