Ogre2.1 分析笔记(四) 渲染流程(一)
来源:互联网 发布:明星淘宝店有哪些品牌 编辑:程序博客网 时间:2024/06/08 12:22
1. Root::renderOneFrame()完成对当前工作空间中的所有场景的帧渲染。
2. Root::renderOneFrame()中的以下代码完成对对场景的渲染。
SceneManagerEnumerator::SceneManagerIterator itor = mSceneManagerEnum->getSceneManagerIterator();
while( itor.hasMoreElements() )
{
SceneManager *sceneManager =itor.getNext();
sceneManager->updateSceneGraph();
}
if (!_updateAllRenderTargets(evt))
return false;
从以上代码可以看出:Ogre先对当前所有场景执行updateSceneGraph(),再更新所有渲染目标。updateSceneGraph()函数完成对场景的裁剪。所以渲染的更新由_updateAllRenderTargets()函数完成。
3. _updateAllRenderTargets()函数中以下代码完成对渲染目标的更新
mCompositorManager2->_update( *mSceneManagerEnum, mHlmsManager );
// give client app opportunity to usequeued GPU time
bool ret = _fireFrameRenderingQueued(evt);
// block for final swap
mCompositorManager2->_swapAllFinalTargets();
从上述代码可以看出:所有渲染的更新由CompositorManager2完成。先_update()完成渲染,再调用_swapAllFinalTargets()完成帧交换,将更新的帧交给显示窗口。
4. _swapAllFinalTargets()函数调用CompositorWorkspace:: _swapFinalTarget()函数完成帧交换。
总结一下:至此可以看出,对场景的渲染和帧交换都是由CompositorWorkspace完成的。- Ogre2.1 分析笔记(四) 渲染流程(一)
- Ogre2.1 分析笔记(五) 渲染流程(二)
- Ogre2.1 分析笔记(一)
- Ogre2.1 Hlms与渲染流程
- Ogre2.1 分析笔记(二)-程序启动流程
- Ogre2.1 分析笔记(六) 合成器脚本分析
- Ogre2.1 分析笔记(七) 材质脚本分析
- Ogre2.1 分析笔记(三)-场景图结构
- Ogre2.1 分析笔记(八) 实现天空盒
- Ogre2.1 结合OpenGL3+高效渲染
- ogre2.1学习(一)Sample_Tutorial01_Initialization
- crysis2 dx9一帧渲染流程笔记
- crysis2 - dx9一帧渲染流程笔记
- React Native 核心渲染流程分析(1)
- 渲染流程笔记
- U3D学习笔记(一)----pipeline渲染流程
- cocos3.1源码分析(2)渲染流程分析
- cocos2d-x渲染流程分析
- Java多线程总结之线程安全队列Queue
- 杂记-混合小知识
- grep 分析日志
- 初学者建议
- CDH hadoop-hdfs-fuse的安装使用
- Ogre2.1 分析笔记(四) 渲染流程(一)
- 对C++IO库的一点理解
- PostgreSQL with子句使用
- Hibernate hello详解
- 最长回文字符串模板(manacher算法 时间复杂度O(n))
- OKHttp3用法介绍
- Myeclipse 2017 CI 破解版下载
- 《An Experimental Comparison of Partitioning Strategies in Distributed Graph Processing》——论文笔记
- 人为什么会打喷嚏?