我写了一个Opengl程序,用一个循环不断重画场景,正常情况下
是50~60帧/秒,但是当我需要画其他模型,数量很多,比如说几百个档案柜,这个时候
计算机负荷明显加大,只有10帧/秒。我想说的是我只想每次重画几个档案柜,其他的只画
一次,不知道有什么方法。我听说模版缓存可能行,但不知道怎么用,请高手指点!!!
这个需要方法的。
吃了饭再说
对于大规模模型的绘制,考虑如下方法:
1,买更好的显卡
2,使用LOD技术。仅仅显示够用的细节数据,不要显示过多的细节数据。也就是说,你可以省略很多细节,但是眼睛却看不出来。
3,采用遮挡剔除技术。需要用算法计算遮挡关系,然后可以剔除大量根本看不见的物体,减少显卡的负担。
4,用视景体剔除。当前可视范围叫做视景体。用几何算法计算到底有哪些物体在视景体中,这些物体是要绘制的。之外的,当然不绘制。这样也可以减少显卡负担。
5,BSP树。这个方法对于静态场景很有用。这是一种生成在二维上静态遮挡关系的算法。方法很成熟。大量用于三维游戏,比如QuakeIII。
6,最后一条,合理安排你的显示数据在内存中的结构。这些数据要尽量连续,尽量一大片一大片的。然后使用ogl的 glDrawElement 之类的函数。
如果当你的视角固定的时候,可以将其它画面除要刷新的东西以外的场景保存为图片,然后每次反复图片,并画出需要刷新的东西就可以了
给三维初学者的建议:
先看《计算机图形学》和《计算几何》,然后再琢磨opengl或者d3d的东西