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

作个总结,方便代码阅读:

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值