2011-01-25 27 views
1

我想繪製數百萬線段到屏幕上。 大部分時間用戶只會看到「宇宙」的某個區域,但用戶應該能夠「縮放」一次查看所有線段。在屏幕上繪製數百萬的線段

我的理解是,圖元是一個「三角形」,所以我將不得不將我的線段表示爲三角形。數以百萬計的三角形。

XNA是這份工作的正確工具,還是會太慢?

其他詳細信息:

  1. 這不是一個遊戲,但對於一些過程的建模程序。
  2. 我不在乎使用哪種語言(XNA被推薦到我)

P.S:請讓我知道如果你需要更多的細節。

+0

爲什麼你想繪製這麼多的線?是否需要一款遊戲? – BlackBear 2011-01-25 15:03:27

+0

你有使用特定的語言嗎? – 2011-01-25 15:03:55

+0

更新的問題。 – drozzy 2011-01-25 15:15:55

回答

0

我的理解是,原始 是一個「三角」,所以我將不得不 表達我的線段爲三角形。 數百萬的三角形。

不正確的,XNA可以完全畫出你行方式如下:

GraphicsDevice.DrawIndexedPrimitives(PrimitiveType.LineList, vertexOffset, 0, numVertices, startIndex, primitiveCount); 

(或者PrimitiveType.LineStrip如果一號線的結束點是2號線的起始頂點)。

XNA是適合這份工作的正確工具,還是 會過慢嗎?

XNA是「一種工具」,如果你畫的線很多,這肯定會比GDI +更快,並且比C++和Unmannaged D3D更容易實現。畫一條線是一個非常便宜的操作。我會建議你只安裝XNA並做一個快速原型,看看你可以同時繪製多少條線。 (我的猜測至少有一百萬)。然後看看你是否真的需要使用其他海報所描述的先進技術。

Felice Pollano建議的「折線簡化」技術不適用於單獨的線條,只適用於由三角形組成的模型(您可以交換很多較小的三角形以提高性能,但會減少視覺效果,如果你被縮小到幾乎沒有人會注意到)它也不適用於「加粗的線條」,因爲它們總是由2個三角形組成。 (除非你允許彎曲線)。

0

是的,正如Felice所暗示的,簡化問題集是遊戲的名稱。硬件和算法有明顯的侷限性,因此繪製「更多東西」的唯一方法實際上是繪製「更少的東西」。

您可以使用諸如將場景劃分爲OctTree這樣的技術,以便您可以執行View Frustrum Culling。有很多技術可以擴展你正在繪製的內容。我最喜歡的一個就是使用冒名頂替者創建一個更容易繪製的複合場景。這裏有一個文件,該文件說明了該技術: http://academic.research.microsoft.com/Paper/1241430.aspx

冒名頂替是基於圖像的元 常用代替複雜的 * 幾何 *爲了減少所需顯示 的 渲染時間複雜的場景。然而,一個大問題 是巨大的內存需要 騙子。本文提出了一種 算法,該算法自動將冒充者置於場景中,以便始終滿足所期望的幀速率圖像質量,同時不需要 存儲器需要大量的冒名頂替者。由一個新的放置方法 和通過像 能見度剔除幾何 細節水平的同時使用的其他 加速技術提供 低存儲器要求。