2017-02-13 87 views
1

我想使用UrhoSharp构建一个命令行工具来绘制一些东西并将输出保存为PNG文件。以无头模式从UrhoSharp保存图像

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

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

有没有办法使UrhoSharp渲染到指定大小的离屏缓冲区?或者,如果我简单地保持窗口隐藏,可能没问题;有没有一种便携式的方式来做到这一点?

回答

1

通过UrhoSharp和Urho3D源一些挖掘后,它看起来像这是不可能的:

  • 在无头模式中,不GPU上下文中创建(“无头”表示没有GPU,不只是无窗)
  • 在正常模式下,总是创建一个SDL窗口。 SDL没有创建无窗口GPU环境的便携机制

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

  • 一开始,需要一些特定的操作系统的代码
  • 它必须是一个SDL_Window,没有任何一种屏幕外的缓冲区

我认为可以在不修改做最好Urho和/或SDL将尽快隐藏窗口。我不确定是否可以避免简要地在屏幕上闪烁窗口。如果我能弄明白,我会在这里进一步评论!