哪种是进行 .NET 3D 图形编程的首选方法: Direct3D 或 XNA 似乎是当前技术,但哪种技术最适合非游戏相关的编程?
此外,Managed Direct 3D 是否已停产?XNA 似乎并不适合非游戏开发。
是的,太糟糕了,MS 停止了 MDX。我目前正在使用SlimDX进行非游戏开发。它不是 MDX 的直接替代品,但至少 API 设计与 MDX v1.1 的 API 相比非常直观。我已将 MDX v1.1 + .Net v1.1 用于我们产品的版本 1。至于版本 2,我们正在迁移到 .Net 2.0。MDX v1.1 不适用于 .Net 2.0,而且它还有很多其他固有问题。因此,我们不得不寻找替代方案。
最初 XNA 是我们的最佳选择。然后,因为它针对游戏市场和与 xbox 360 的兼容性,我们发现我们需要编写大量的变通方法/hack 以使其适合我们。更糟糕的是与我们在产品中广泛使用的 DirectShow 的互操作性。MS在现有技术和新技术之间造成了巨大的差距,MDX和DirectShow的最新替代品目前还不足以替代旧的,我们等不起下一个版本。
我不会说 SlimDX 是非游戏开发的最佳选择。但就我而言,确实如此。而且由于它是开源的,我们总是可以对我们认为合适的地方进行更改。当我们使用 SlimxDX + DirectShow.Net 时,存在相当大的故障。当我们使用 MDX 1.1 + DirectShow.Net 时,这些故障不存在。我的猜测是,在内部,MS 进行了相当多的修改以使其正常工作。
无论如何,如果您根本不使用 DirectShow,请考虑Ogre3D/MOgre3D。MOgre3D 是 Ogre3D 的管理包装器,Ogre3D 是一个构建良好的 3D 引擎。这是我们的首选,但我们不能使用它,因为它不能很好地支持 DirectShow。
托管 DirectX 并没有被完全抛弃,而是被重写为 XNA。诚然,XNA 的设计考虑了 Xbox 360,但 XNA 与我使用的任何其他 3D 框架一样适用于非游戏 3D 编程。不要忽视 XNA 极其方便的内容导入管道……您可以将模型和着色器放到卡上并轻松渲染。
如上所述,Creators Club 社区非常丰富,您可能会对他们的Winforms 教程感兴趣。
如果它与游戏无关,那是什么?如果你回答这个问题,我们可能会给你一个很好的答案,无论如何,取决于应用程序 WPF 可能是一个很好的答案。
这里的简单答案可能是 XNA。也许是 WPF。这取决于。
如果您正在寻找任何类似于远程游戏的东西,XNA 是一个非常好的解决方案,因为它为您提供了一个框架,可以很好地与几乎任何 3d 交互世界的实现相结合。除了处理所有 3d 视觉内容之外,您还可以轻松获得碰撞检测、照明、计时和相机等内容。如果您正在处理的是某种 3d 虚拟空间,那么您所拥有的可能非常接近于游戏,而 XNA 将为您提供除了图形端之外的更多功能。
否则,如果您正在寻找 3d UI 或数据可视化,WPF 可能更符合您的需求。不必要的开销减少了,并且您获得的其他内容(例如命令或数据绑定)无论如何可能对您更有用。据我了解,它将在后端使用硬件加速,并在必要时通过软件处理材质着色器和各种 3d 效果,以便用户获得视觉一致的体验。
如果你有一个不太适合这两个阵营的例子,我真的很想听听。对于想要编写有用的图形库的人来说可能是一个很好的机会......
我无论如何都不是专家,但是当我把两者都搞砸时,我发现 XNA 好多了。我只是玩弄我的 Zune 和 PC 游戏。我没有足够的时间来处理 DirectX,我找到了更多关于 XNA 的示例。
你也有一个完整的社区来帮助你。
Xna 是微软的托管 DirectX。不幸的是,他们没有写太多关于将它用于非游戏相关的事情,但它可以做到。
不幸的是,我现在在网上找不到任何好的资源来展示如何做到这一点。