2008-10-27 66 views

回答

7

那本書意味着三角形。否則,如果我想要1000面多邊形呢?我還能達到每幀2000-4000個這樣的形狀嗎?

2

根據此page,在Direct3d中多邊形是n邊。

在C#:

public static Mesh Polygon(
    Device device, 
    float length, 
    int sides 
) 
4

實際上,你希望它只是一個三角形,因爲如果一個多邊形不是三角形,它通常被曲面細分爲一個。 (例如,一個四邊形由兩個三角形組成,等等)。基本的三角剖分(曲面細分)算法非常簡單;你只需循環頂點並將每三個頂點變成一個三角形。

3

這裏,「多邊形」是指三角形。全部。然而,正如你所指出的,除了確定性能的三角形的數量之外,還有更多的變量。

說事

關鍵的問題是:

  • 存儲的格式(索引與否;列表中,風扇,或條帶)
  • 存儲(主機 - 存儲器頂點數組,主機 - 存儲器頂點的位置緩衝劑或GPU存儲器頂點緩衝器)
  • 渲染(的模式是從主機發出充分的拉伸原語指令,或通過實例化)
  • 三角尺寸

總之,這些變量的性能可能會大於2倍的變化。同樣,運行應用程序的硬件在現實世界中的性能可能會變化10倍或更多:2005年低端的GPU(或集成圖形處理器)將在任何有意義的情況下執行速度降低10-100倍度量,而不是當前頂級的GPU。

總而言之,任何使用2-4000個三角形的建議都過時了,以至於今天應該完全忽略它。即使是低端硬件,今天也可以在合理的條件下輕鬆推送100,000個三角形。此外,今天大多數視覺上感興趣的應用都以像素着色性能爲主,而不是三角形數。

獲得良好三角形吞吐量今天一般的經驗法則:

  • 使用[索引]三角形(或四)列出了GPU,內存頂點緩衝區
  • 存儲數據
  • 戰平每個大批量繪製圖元調用(數千個圖元)
  • 在屏幕上使用三角形>> = 16像素
  • 請勿使用幾何着色器(特別是用於幾何放大)

做所有這些事情,今天的任何機器都應該能夠輕鬆渲染數十或數十萬個三角形。

0

正如其他人已經說過的,這裏的多邊形意味着三角形。 三角形的主要優點是,由於3個點定義了一個平面,所以三角形根據定義是共面的。這意味着三角形內的每個點都被精確定義爲多邊形點的線性組合。更多的頂點不一定是共面的,並且它們沒有定義唯一的曲面。

機械模型比圖形更好的一個優點是三角形也不可變形。