您的位置:首页 > 其它

Ogre地型数据生成渲染数据流程

2011-09-16 10:59 134 查看
作个总结,方便代码阅读:

1. 代码入口TerrainSceneManager::setWorldGeometry(), 此函数主要有2个重要任务:a、根据Terrain.cfg加载地型配置信息,b、加载高度图数据。

2. 初始化分级索引缓冲 initLevelIndexes()

3. calculateWorldRange --------------> 调用 resize(AABB) 重新计算世界范围

4. 设置分页材质 HeightmapTerrainPageSource::setupTerrainMaterial 取代 TerrainSceneMgr::setTerrainMaterial , 因为这里使用PagedGeometry来管理超大地型, 分页加载

等,故每页可以有自己的材质

5. setupTerrainPages 设置地型分页

6. _firePreRequestPage()

mActivePageSource->requestPage() [重点]

_firePostRequestPage()

7. 细分 requestPage()

a、读取HeightData

b、firePageConstructed()

c、核心: buildPage()

1. 首先构建真正的TerrainPage

2. 构建场景结点容纳新的Page

3. 根据新的Page及TileSize构建Tile(也就是渲染数据TerrainRenderable) 我的配置是: PageSize 128 x 128 TileSize 64 x 64

a. 子结点挂Tile b. setMaterial c. page->tiles[p][q] = tile 关联Page d. node->attachObject(tile) 关联场景结点

8. 加载地型页挂载的其它静态物件(如:树、草、水等) Page->loadPageMovable()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: