1

我想使用 UrhoSharp 构建一个命令行工具来绘制一些东西并将输出保存到 PNG 文件中。

我已经想出了如何在窗口中绘制我想要的内容,并且可以使用Graphics.TakeScreenshot. 但我更希望它在不显示窗口的情况下运行,这样我就可以在构建管道中使用该工具,而不会一直弹出窗口。

我还发现我可以通过添加AdditionalFlags = "-headless"到我的ApplicationOptions. 但我不知道在这种情况下如何触发 3D 引擎运行,或者输出去哪里。看起来图形子系统可能在此模式下根本没有初始化。

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

4

1 回答 1

1

在对 UrhoSharp 和 Urho3D 源进行了一些挖掘之后,看起来这是不可能的:

  • 在无头模式下,不创建 GPU 上下文(“无头”意味着没有 GPU,而不仅仅是没有窗口)
  • 在正常模式下,总是会创建一个 SDL 窗口。SDL 没有用于创建无窗口 GPU 上下文的可移植机制

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

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

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

于 2017-02-14T20:38:28.497 回答