我正在尝试在WPF(.NET 4.0)中编写一个类似CAD的应用程序,该应用程序必须能够显示很多2D点/线。它将用于显示整个城市的CAD平面图,并在鼠标悬停时进行缩放,平移,旋转和点捕捉。
现在,我纯粹使用WPF。我从CAD文件中读取了对象,然后将它们绘制到StreamGeometry中,将其用作新Path的笔触,然后通过几次转换将其添加到Canvas中。
我的问题是此解决方案的伸缩性不够好。它适用于小型CAD文件,但是当我要显示半个城市(带有房屋和土地边界)时,它会非常延迟。
我也尝试将我的CAD文件转换为图像,但是
-32000x32000的分辨率有时不够
-缩小时,线条太细。
最后,我需要将其放置在Canvas(2D / 3D)上作为背景。
我最好的选择是什么?
谢谢,
尼克拉斯
最佳答案
WPF对于大型3D模型不利。我担心这太慢了。最好的选择是直接3d或openGL
但是,即使试图以Direct3d,openGL的速度运行,如果要显示整个城市,您仍然需要弄清楚如何在渲染场景之前剔除尽可能多的多边形/顶点。
关于此的信息很多(通常在游戏开发中)
有一些技术包括视锥细胞剔除,近平面和远平面剔除。
同样,由于您可能具有静态场景,因此您可以使用二进制空间分区。