SceneManager里的几个事件相关函数

1. Listener
virtual void 
addListener (Listener *s)
Add a listener which will get called back on scene manager events.

Listener借口提供的功能
Public Member Functions
virtual void 
preFindVisibleObjects (SceneManager *source, IlluminationRenderStage irs, Viewport *v)
Called prior to searching for visible objects in this SceneManager.

virtual void 
postFindVisibleObjects (SceneManager *source, IlluminationRenderStage irs, Viewport *v)
Called after searching for visible objects in this SceneManager.

virtual void 
shadowTexturesUpdated (size_t numberOfShadowTextures)
Event raised after all shadow textures have been rendered into for all queues / targets but before any other geometry has been rendered (including main scene geometry and any additional shadow receiver passes).

virtual void 
shadowTextureCasterPreViewProj (Light *light, Camera *camera, size_t iteration)
This event occurs just before the view & projection matrices are set for rendering into a shadow texture.

virtual void 
shadowTextureReceiverPreViewProj (Light *light, Frustum *frustum)
This event occurs just before the view & projection matrices are set for re-rendering a shadow receiver.

virtual bool 
sortLightsAffectingFrustum (LightList &lightList)
Hook to allow the listener to override the ordering of lights for the entire frustum.

virtual void 
sceneManagerDestroyed (SceneManager *source)
Event notifying the listener of the SceneManager's destruction.

2. LodListener

这个接口可以实现对Lod的处理的,比如可以根据Lod对mesh及submesn进行自定义的剔除操作,从而优化程序效率。

void 
addLodListener (LodListener *listener)
Add a level of detail listener.

LodListener接口的功能
Public Member Functions
virtual bool 
prequeueMovableObjectLodChanged (const MovableObjectLodChangedEvent &evt)
Called before a movable object's lod has changed.

virtual void 
postqueueMovableObjectLodChanged (const MovableObjectLodChangedEvent &evt)
Called after a movable object's lod has changed.

virtual bool 
prequeueEntityMeshLodChanged (EntityMeshLodChangedEvent &evt)
Called before an entity's mesh lod has changed.

virtual void 
postqueueEntityMeshLodChanged (const EntityMeshLodChangedEvent &evt)
Called after an entity's mesh lod has changed.

virtual bool 
prequeueEntityMaterialLodChanged (EntityMaterialLodChangedEvent &evt)
Called before an entity's material lod has changed.

virtual void 
postqueueEntityMaterialLodChanged (const EntityMaterialLodChangedEvent &evt)
Called after an entity's material lod has changed.


3.RenderQueueListener
virtual void 
addRenderQueueListener (RenderQueueListener *newListener)
Registers a new RenderQueueListener which will be notified when render queues are processed.

Public Member Functions

virtual 
~RenderQueueListener ()

virtual void 
preRenderQueues ()
Event raised before all render queues are processed.

virtual void 
postRenderQueues ()
Event raised after all render queues are processed.

virtual void 
renderQueueStarted (uint8 queueGroupId, const String &invocation, bool &skipThisInvocation)
Event raised before a queue group is rendered.

virtual void 
renderQueueEnded (uint8 queueGroupId, const String &invocation, bool &repeatThisInvocation)
Event raised after a queue group is rendered.


4.RenderObjectListener
virtual void 
addRenderObjectListener (RenderObjectListener *newListener)
Registers a new Render Object Listener which will be notified when rendering an object.

Public Member Functions
virtual void 
notifyRenderSingleObject (Renderable *rend, const Pass *pass, const AutoParamDataSource *source, const LightList *pLightList, bool suppressRenderStateChanges)=0
Event raised when render single object started.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值