作者littleshan (我要加入剑道社!)
看板C_and_CPP
标题Re: 关於 OpenGL 大场景 最佳化
时间Thu Mar 19 17:00:16 2009
※ 引述《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
1F:推 lostmyself:thx!! 03/19 21:40
2F:推 wowtiger:5. mesh 把 TriList 转成 TriStrip, 可以稍微减少 Index 03/20 01:50
3F:→ wowtiger: 空间(最大达1/3), 并且可以减少 Vertex Cache Miss. 03/20 01:50
4F:→ wowtiger: (关键字: NvTriStrips Library) (疑? 03/20 01:51
5F:→ littleshan:是的,楼上说的也是一个加速方法 03/20 13:08