我有一个 .dds 文件,我想要一个 .png 文件。虽然我已经了解了DevIL.NET 库,但是那里的一个静态类的 API 设计并没有并行化,所以我希望找到另一种方法。这使我选择了 XNA。
但是,这就是我对这个想法的了解......
- 好的,看起来我想要这
Texture2D
门课;然后我可以打电话myTexture2D.SaveAsPng
。 - 但是如何从我的 .dds 文件中获取其中之一呢?那么文档似乎表明我想使用
myContentManager.Load<Texture2D>
. - 哦,废话,不是它,那是某种游戏内容管理系统。好吧,我的搜索似乎发现了很多
myTexture2D.LoadFile
; 我会去的。 - 呃,我错过了程序集参考还是什么?哦不,我明白了,他们在 3.1 和 4.0 之间删除了该方法,太棒了。好吧,好吧,这有点烦人,但
myTexture2D.LoadStream
不是真正的问题。 - 等等这是什么?它想要一个
GraphicsDevice
? 嗯,看起来人们通常会通过GraphicsDeviceManager
……哦等等,我不会再走那条路了,Manager
对我来说没有更多的东西了。 - 我想我应该手动实例化这个东西。好吧,这不是太难......
var myGraphicsDevice = new GraphicsDevice(GraphicsAdapter.DefaultAdapter, GraphicsProfile.HiDef,
(呃哦这是什么PresentationParameters
东西好吧好吧我试试new PresentationParameters());
。 - 好吧,这引发了异常。他们想要……
DeviceWindowHandle
在我的PresentationParameters
?但我正在运行一个控制台应用程序!
所以我真的希望有一种不那么复杂的方式来做到这一点;GraphicsDevice
也许我可以使用某种默认值。创建一个完整的窗口只是为了将.dds转换为.png感觉很傻。
我想,欢迎对我的转换问题提出替代建议,尽管一般来说了解如何从非 XNA 代码中使用 XNA 可能是值得的。