在无头模式下从UrhoSharp保存图像

时间:2017-02-13 23:25:09

标签: urhosharp urho3d

我想使用UrhoSharp构建一个命令行工具,它可以绘制一些内容并将输出保存到PNG文件中。

我已经想出如何在窗口中绘制我想要的内容,并且我可以使用Graphics.TakeScreenshot保存它(在等待几次更新之后)。但我更喜欢它在没有显示窗口的情况下运行,因此我可以在构建管道中使用该工具,而不会一直弹出窗口。

我还想通过将AdditionalFlags = "-headless"添加到我的ApplicationOptions,我可以在无头模式下启动Urho引擎。但我无法弄清楚如何触发3D引擎在这种情况下运行,或输出的位置。看起来在这种模式下可能根本不会初始化图形子系统。

有没有办法让UrhoSharp渲染到指定大小的屏幕外缓冲区?或者,如果我只是隐藏窗口可能没问题;有可行的方法吗?

1 个答案:

答案 0 :(得分:1)

经过UrhoSharp和Urho3D源码的挖掘后,看起来这是不可能的:

  • 在无头模式下,没有创建GPU上下文("无头"表示没有GPU,不只是没有窗口)
  • 在正常模式下,始终会创建SDL窗口。 SDL没有用于创建无窗口GPU上下文的可移植机制

我可以在初始化Urho之前创建自己的窗口并传入OS窗口句柄;但是:

  • 对于需要某些特定于操作系统的代码的启动
  • 它必须是SDL_Window,而不是任何类型的屏幕外缓冲区

我认为在不修改Urho和/或SDL的情况下可以做的最好的事情就是尽快隐藏窗口。我不确定我是否可以避免让窗口短暂闪屏。如果我能搞清楚,我会在这里进一步评论!