OGRE渲染过程

参考文章:http://www.cnblogs.com/liangliangh/p/3577239.html

OGRE渲染过程:

   1) Create the Root object.
   2) Define the resources that Ogre will use.
   3) Choose and set up the RenderSystem (that is, DirectX, OpenGL, etc).
   4) Create the RenderWindow (the window which Ogre resides in).
   5) Initialise the resources that you are going to use.
   6) Create a scene using those resources.
   7) Set up any third party libraries and plugins.
   8) Create any number of frame listeners.
   9) Start the render loop.

1.创建Root,Root初始化。

2.创建渲染系统和渲染窗口,选择渲染系统,设置渲染窗口。

3.加载资源,需要在创建渲染系统和渲染窗口后面。

不能早于RenderSystem的初始化和RenderWindow的创建,如果使用OverlaySystem,也不能早于OverlaySystem的创建。 OGRE的资源文件是OGRE的一个特色,最常见的资源文件莫过于Mesh(.mesh)和Material(.material)了,注意Mesh是一个可渲染物体,而不仅仅是一个网格,Material定义可渲染物体除几何信息外的其他所有属性,可以是而不限于 颜色、纹理、着色器什么的。默认下, 资源文件的数据直到该资源使用时才被加载,如一个纹理的图片并不是在纹理定义时加载,而是在纹理被首次使用时加载至内存,也可以手动调用ResourceGroupManager::loadResourceGroup加载。

4.创建场景,一个root可以有多个场景管理器SceneManager,一个SceneManager有多个Camera,但是一个Camera只有一个viewPort.

1)创建SceneNode.
2)创建Entity.
3)场景下面可以创建Camera.

4)创建Light.

5)创建Particles或BillBoards.

SceneManager的功能总结为两个方面:
     管理Camera, SceneNode, Entity, Light,Particles等场景中的对象,作为Factory提供create方法如createEntity(),createLight()(也负责释放它们)。

     管理场景图形,包括维护场景树的可用性,计算节点的Transform信息,隐藏面剔除(Culling)。

 目前大多数3D图形库采用了场景图形(Scene Graph)技术,即用场景树来组织场景的所有物体,场景树的节点可分为两种:分支节点和叶节点。分支节点SceneNode(继承自Node)主要负责空间位置变化,叶节点可以为:Entity(可绘制实体),Light,Camera等。Lights, Billboards, Particles, and Cameras are examples of scene elements that are not entities.关于场景树,最需要了解的是,叶节点对象在世界坐标中的最终位置是由父节点级联决定的。 每个绑定的物体都需要一个SceneNode来承载(创建一个新的或者已有的,已有的比较少),Imagine you have a character and you want to attach a tool to their hand. You wouldn't want to attach the tool to SceneNode for the entire character. Instead, you could attach a SceneNode representing their hand to the character's main SceneNode, and then attach the tool Entity to that "child" SceneNode

一个可用的场景树不能有循环路径,如下图的场景树,OGRE程序运行时会抛出异常。

     ScneManager根节点在世界坐标系(0,0,0);父节点有本地坐标系;子节点也有本地坐标系;物体挂接在子节点上面(从3ds max中出来的位置也就是相对于子节点的位置);子节点可以保存当前世界坐标系可以提高每次都从上到下遍历树节点来计算变换,可以提高渲染性能。

     可以调用Ogre::SceneManager::setShadowTechnique方法设置阴影,Ogre::SceneManager::setSkyBox方法设置天空,
Ogre::SceneManager::setFog方法设置雾效果。

5.建立第三方库和设置帧监听器

7) Set up any third party libraries and plugins.
8) Create any number of frame listeners.

6.渲染整个窗口

mRoot->startRendering();
根节点使用渲染引擎,渲染引擎使用RenderTarget,RenderTarget使用viewPort,viewPort使用Camera,Camera使用
SceneMgr->renderScene来渲染场景,然后加载资源,变换数据,渲染物体。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值