Laz*_*iko 4 c# directx wpf xna slimdx
这就是我要做的事情:
要构建类似CAD的应用程序,从文件中加载点云(即表示3D对象的数千个3D点),允许用户操纵点(即通过移动点来改变形状),进行大量计算点上的点(例如,找到线和曲面之间的交点,检测点在曲面上方或下方等,测量点之间的距离,或点到曲面等),然后将修改后的点保存到文件中.
它还提供基本的类似CAD的UI功能,如放大/缩小,平移视图,旋转相机等.
速度是主要问题.
我不想使用自己的函数进行矩阵运算并定义自己的点/线/表面类,而是希望使用现有的库/ API来完成这项工作.
我知道WPF,XNA和SlimDX提供了进行3D几何计算的API,所有这些都最终调用了DirectX,但我只是对所有人都是新手.我在想:
哪一个(或其他一些建议)可以提供更好的速度表现.
我对DirectX 3D功能的理解是它主要处理游戏图形/屏幕输出,它还适用于数据级计算(即使用3D功能来操纵点数据,计算距离等,但不能输出它屏幕)?合适的,我的意思是如果我创建数以千计的DirectX顶点并对它们进行mainpulate,它会比使用我自己的数据类型和结构慢得多吗?如果我的理解是错误的,请纠正我.
如果我使用WPF,我是否也需要使用XNA?我有点混淆这两件事.
该应用程序应该在研究实验室的PC上运行,它没有强大的游戏显卡,所以它是否意味着XNA不是首选?
关于这些技术的建议应该用于这个应用吗?
谢谢!!
========更新
为了更清楚,应用程序将在3D中加载~108,000个点,并且每个点将与其他相邻点形成表面,因此大致涉及相同数量的3D表面(我不是同时生成它们).我将使用点和曲面进行大量的3D几何和矩阵计算,例如交点,插值,变换等,因此"计算"的速度是我主要关注的问题.大多数时候我只会将最终结果绘制到屏幕上,而绘图主要是线条和点,"绘图"的速度并不是一个大问题.所以它不是一个图形密集型应用程序,而是一个几何计算密集型应用程序.
在阅读答案和评论后,我想到了两个选择:
使用原始数据类型存储和计算数据,并在屏幕上绘制数据时将数据转换为WPF/XNA/SlimDX数据结构,或者
使用这些API的数据结构来存储,计算和绘制所有这些点.
哪一个更好?