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