您的位置:首页 > 其它

Ogre1.8源码剖析之OgreRenderTarget(一)

2013-03-03 11:11 246 查看
OgreRenderTargetListener:(渲染目标监听器)

Listener的定义:当有特定的事件(Event)触发时,某个接口将被自动调用(通常是被框架或者系统),这个接口就是可以叫做Listener。OgreRenderTargetListener就是一个与渲染目标事件(RenderTarget Event)相关的Listener。为了能够接收到渲染目标事件的通知,通常我们需要继承这个OgreRenderTargetListener类,并且重写自己需要的方法,然后调用RenderTarget的addListener方法将继承的类添加注册进去,我们能够注册很多个这样的监听器,这样就可以实现由不同的监听器来实现不同的效果。

有两种情况下会触发一个渲染目标事件:1.当一个渲染目标作为一个整体被更新之前或者之后;2.当渲染目标上的某个视口被更新之前或者之后。每一个渲染目标都会维护一个监听器队列,当然,我们也可以在多个渲染目标上注册同一个监听器,这之间并不相互影响,因为渲染目标事件中包含了一个哪个渲染目标信息。

渲染目标监听器中会对两个东西进行监听:一个是渲染目标(RenderTarget);另一个是渲染目标中的视口(RenderTargetViewport)。因而对应的监听回调函数和事件都有两类,一类针对于渲染目标,回调函数和事件中只包含RenderTarget这个名字;另一类是对于渲染目标上的视口,其回调函数和事件中则包含了RenderTargetViewport这个名字。如下所示:

virtual void preRenderTargetUpdate(const RenderTargetEvent&)


当该渲染目标即将要被渲染上去时会调用这个函数。换句话说,当这个渲染目标上的任何一个视口将被渲染的时候。要注意的地方是:如果这个渲染目标上面的视口被设置为了清除背景,那么我们自己渲染的所有东西将丢失。

virtual void postRenderTargetUpdate(const RenderTargetEvent&)


当该渲染目标渲染完毕之后会调用这个函数。换句话说,当这个渲染目标上的所有视口都已经渲染完毕之后。

virtual void preViewportUpdate(const RenderTargetViewportEvent&)


当该渲染目标上的某个视口即将被更新时会调用这个函数。在这个函数中,可以来改变某个视口的设置,例如显示或者隐藏特定的overlays.

virtual void postViewportUpdate(const RenderTargetViewportEvent&)


当该渲染目标上的某个视口更新完毕后会调用这个函数。

virtual void viewportAdded(const RenderTargetViewportEvent&)


当该渲染目标上添加了某个视口时会调用这个函数。

virtual void viewportRemoved(const RenderTargetViewportEvent&)


当该渲染目标上移除了某个视口时会调用这个函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: