我已经使用了WPF的3D功能来学习,并进行了一些实现,我发现它非常有能力,而且我还在学习DirectX 11,与在WPF中使用3D类相比,它非常棘手。我只将WPF 3D用于非常基本的东西,我的问题是:
WPF3D是否同样适用于3D建模工具、游戏引擎和3D模拟等高级应用程序,成为DirectX和OpenGL的替代品?
如果在同一个联盟中还有其他东西,请也提出来。
发布于 2012-01-20 23:45:42
问得好。答案是,这取决于!!
更有用的是,我可以这样说:几年前,我用OpenGL开发了一个CAD风格的3D渲染应用程序。这必须显示多达1,000,000个对象的石油钻机的CAD模型,并允许用户放大细节,或缩小,移动对象等。我可以肯定地说,WPF不适合这种类型的应用程序,因为它太慢了。这个应用程序是使用C++/CLI开发的,并从OpenGL (工具栏,窗口)桥接到C++到OpenGL(渲染面),甚至由于thunking而引入了比原生C++/OpenGL应用程序更高的性能。因此,如果你想要最高的性能,你不能用DirectX或OpenGL击败原生C++。
WPF可以为更简单的3D应用程序提供高性能的3D图形和流畅的交互性。例如,3D图表表面或3D旋转木马,甚至是3D CAD模型查看器,只要模型相当简单。一旦对象数量开始增加,你会注意到渲染引擎无法处理它-那时候你需要切换到允许直接访问GPU的渲染引擎。
对于折中方案(托管+ DirectX),请尝试SharpDX。这基本上是托管DirectX的开源实现,非常强大和通用。与原生C++相比,托管DirectX的性能影响很小(~5%),如果处理得当,托管done的性能可能会非常好。
我们所做的事情是通过D3DImage将DirectX直接集成到WPF中。我们已经在一个使用DirectX11 (而不是WPF3D)绘图的WPF 3D Chart Control中实现了这一点。这直接从原生DirectX共享到WPF,但您可以使用SharpDX获得同样好的结果,我们已经在这里使用它创建了一个高速WPF Drawing Plugin。
要想展示一下WPF3D,我建议你试试this link。正如你注意到的,WPF3D可以制作非常吸引人的例子,有时甚至是复杂的例子,但你不会在其中找到任何100万个目标石油钻机;)
最后,你想在WPF 3D中做什么?只是一个兴趣点,或者你有一个特定的项目要实现,并想知道它是否合适?
发布于 2012-08-13 19:14:49
三维图形有两种模型: 1.流水线或无限循环方法(3D Game,Hard level 3D Cad systems with 100.000及更多objects - meshes) 2.智能抽象模型WPF3D,支持经典的OOP without any OnDraw,OnPaint方法。正确使用WPF的Media3D方法是非常重要的。所以最重要的是没有任何OnDraw的,OnPaint。
您必须分析您的应用程序类型和功能,并选择。
对于大多数简单应用程序,但对于完全托管的OOP对象而言,这并不是对WPF 3D的正确看法。例如,在我的网站TIMO Structural CAE上查看屏幕截图
这是一个完全托管的3DWPF应用程序。
发布于 2012-01-20 23:45:43
如果你真的想做一些复杂的事情,你最好使用一个成熟的图形引擎(通常是为游戏开发的),而不是直接使用DirectX或OpenGL。WPF 3D引擎提供了类似的抽象级别,尽管它的功能集要小得多(如果您想要阴影、反射、折射、凹凸贴图、骨骼动画等,您仍然必须非常努力地工作)。
也就是说,我已经成功地将它用于内部3D模拟工具的可视化,它足以满足我的需求。即使在拥挤的场景中,它也表现得相当好,并且基本的照明支持足以清晰地可视化几何体。它也很容易上手,这在我的书中是一个很大的优势(我没有太多的时间投资于开发可视化)。
https://stackoverflow.com/questions/8941383
复制相似问题