Graphics 在屏幕上绘制数百万段

Graphics 在屏幕上绘制数百万段,graphics,xna,Graphics,Xna,我想在屏幕上画数百万条线段。 大多数情况下,用户只能看到宇宙中的某个区域,但用户应该能够缩小以同时看到所有线段 我的理解是,基本体是一个三角形,所以我必须将我的线段表示为三角形。数百万个三角形 XNA是适合这项工作的工具,还是速度太慢 其他细节: 这不是一个游戏,而是一些过程的建模程序。 我不在乎XNA推荐给我使用哪种语言 注意:如果您需要其他详细信息,请告诉我。当您放大详细信息时,请选择简单边界框,检查三角形是否可见,以避免绘制不可见的对象。当用户全部缩放时,应该应用一些多段线简化算法,以避免

我想在屏幕上画数百万条线段。 大多数情况下,用户只能看到宇宙中的某个区域,但用户应该能够缩小以同时看到所有线段

我的理解是,基本体是一个三角形,所以我必须将我的线段表示为三角形。数百万个三角形

XNA是适合这项工作的工具,还是速度太慢

其他细节:

这不是一个游戏,而是一些过程的建模程序。 我不在乎XNA推荐给我使用哪种语言
注意:如果您需要其他详细信息,请告诉我。

当您放大详细信息时,请选择简单边界框,检查三角形是否可见,以避免绘制不可见的对象。当用户全部缩放时,应该应用一些多段线简化算法,以避免绘制太多的内容

你也遇到过同样的问题,可能会有帮助。是的,正如费利斯所说,简化问题集是游戏的名字。硬件和算法有明显的局限性,所以画更多东西的唯一方法实际上是画更少的东西

您可以使用诸如将场景划分为一个场景这样的技术,以便可以执行以下操作。有很多技术可以用来缩小你正在画的东西。我最喜欢的一种方法是使用冒名顶替者创建一个更容易绘制的合成场景。这里有一篇文章解释了这项技术:

视点替用是基于图像的基本体 常用来代替复杂的 *几何图形*以减少 显示所需的渲染时间 复杂的场景。然而,这是一个大问题 是否需要大量内存 为了骗子。本文提出了一种新的方法 自动放置 冒名顶替者进入一个场景以便 期望的帧速率图像质量为 总是相见,而同时又不相见 需要大量的骗子 记忆力低内存需求 由一种新的放置方法提供 通过同时使用 其他加速技术,如 可见性剔除与几何 细节层次

我的理解是原始的 是一个三角形,所以我必须 将我的线段表示为三角形。 数百万个三角形

不正确,XNA可以通过以下方式为您完美地绘制线条:

GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.LineList, vertexOffset, 0, numVertices, startIndex, primitiveCount);
或PrimitiveType.LineStrip(如果line1的结束顶点是line2的开始顶点)

XNA是适合此工作的工具吗,或者 会不会太慢

XNA是一种工具,如果你画了很多线,这肯定会比GDI+快,并且比C++中的un-nDead D3D更容易实现。划一条线是一种非常便宜的操作。我建议您只需安装XNA并快速制作原型,看看您可以同时绘制多少条线。我估计至少有一百万。然后看看你是否真的需要使用其他海报描述的先进技术


此外,Felice Pollano建议的多段线简化技术不适用于单独的线,仅适用于由三角形组成的模型,您可以将大量小三角形替换为较大的三角形,以提高性能,但减少视觉效果,如果你被放大了,没有人会注意到它也不适用于加厚的线,因为它们总是由2个三角形组成。除非你允许弯曲线条。

你为什么要画这么多线条?这是一个游戏吗?你有一个特定的语言你想使用吗?你和Felice跳的算法和技术,只是没有任何意义的线碎片:。你需要一个冒名顶替者图像的顶点数量是一条直线的两倍。虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。