命令行linux OpenGL处理



我需要构建一个命令行工具,它将以3D模型为参数,并输出它的照片,该应用程序可能会处理这些照片,也可能不会处理这些照片。该工具将部署在Linux上,但我希望它尽可能跨平台。

程序不应该呈现任何类型的窗口,也不应该接受除了命令行参数之外的任何其他输入。

我在想,有人会怎么做?我目前能够在GLFW的帮助下在屏幕上显示3D模型,它实际上将我的事件处理程序驱动到外围输入,以及我的主循环。然而,如果我想制作一个以输入输出为文件的命令行程序,我不知道使用GLFW是否会对我有所帮助。

有人知道如何处理这个问题吗?

  1. 创建不可见/隐藏窗口
  2. 使用其gl上下文渲染到FBO
  3. 使用readpixels将其保存到文件

要使OpenGL工作,您需要OpenGL上下文。过去需要某种窗口系统激活,这可能会产生一些可绘制的内容,为其创建上下文。

一些OpenGL实现,如Mesa,实际上允许您为在没有窗口系统的情况下创建的可绘制对象创建OpenGL上下文;梅萨称之为"屏幕外的梅萨"。有了Linux上的Gallium3D驱动程序,这甚至可能给你GPU加速。但通常情况下,你最终会进入"软管道"软件光栅化器。

有人知道如何处理这个问题吗?

不要使用OpenGL。OpenGL主要用于创建交互式图形;但当然,如果你的目标是复杂数据的可视化,那么GPU会更适合。

使用NVidia硬件,您需要使用X服务器;X服务器必须在控制台上运行并处于活动状态才能正常工作。AMD硬件和开放源代码驱动程序和梅萨可能会给你屏幕外的功能,并没有X(但我从来没有尝试过)。

在WindowsServer上,你无论如何都没有适当的OpenGL支持(只有v1.4版本,速度非常慢),所以不用担心它

最新更新