Re: 關於 OpenGL 大場景 最佳化

看板C_and_CPP (C/C++)作者 (我要加入劍道社!)時間16年前 (2009/03/19 17:00), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《lostmyself (該抓住的 要得著)》之銘言: : Hi, all : 想請教關於用 OpenGL 製作大場景 如何加速的問題 : 我目前的場景裡面有數十個小場景 : 每個小場景大約用了 40萬個 triangle : 只 Load 一兩個小場景跑起來還 OK, 但是大約十個景就會明顯的 Lag 了 : 我每個小場景都有先用 glNewList 做好了, Display 的時候就直接 glCallList : 不知道各位有什麼建議的方法來做這種大場景嗎 1. camera 沒照到的物體就不用畫出來。這部份通常會先用某些演算 法去切割場景,再籍由 camera 的位置去快速判斷那些三角形可 以不用畫出來。 (關鍵字:Octree、BSP) 2. 如果 mesh 距離鏡頭很遠,那畫一個比較粗糙的 mesh 就夠了, 沒必要畫出精細的模型。 (關鍵字:mesh LoD) 3. 有些 mesh 已經被其它的 mesh 擋住了,這時候再去畫它是浪費 時間。 (關鍵字:Occlusion Culling) 4. mesh 資料要直接存到顯示卡的記憶體上,另外別用 glVertex 畫 三角形,那個超慢的,請用 glDrawElements 一次把所有要畫的三 角形送進 pipeline 才快。 (關鍵字:VBO) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.151.2

03/19 21:40, , 1F
thx!!
03/19 21:40, 1F

03/20 01:50, , 2F
5. mesh 把 TriList 轉成 TriStrip, 可以稍微減少 Index
03/20 01:50, 2F

03/20 01:50, , 3F
空間(最大達1/3), 並且可以減少 Vertex Cache Miss.
03/20 01:50, 3F

03/20 01:51, , 4F
(關鍵字: NvTriStrips Library) (疑?
03/20 01:51, 4F

03/20 13:08, , 5F
是的,樓上說的也是一個加速方法
03/20 13:08, 5F
文章代碼(AID): #19mWcZn- (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19mWcZn- (C_and_CPP)