Chinaunix首页 | 论坛 | 博客
  • 博客访问: 174364
  • 博文数量: 43
  • 博客积分: 827
  • 博客等级: 准尉
  • 技术积分: 487
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-26 19:19
文章分类

全部博文(43)

文章存档

2015年(1)

2014年(1)

2013年(5)

2012年(36)

我的朋友

分类: WINDOWS

2012-05-06 17:06:40

在Irrlicht中的SceneManager中的渲染单位是Scene Node。而Irrlicht中提供了ISceneNode接口供Scene Manager调用。而SceneManager实际上也是一个SceneNode,作为整个Scene Graph的Root节点。

在ISceneNode中的接口:
virtual void OnRegisterSceneNode():
负责根据自己的IsVisible(这个参数和该Node是否在View Frustrum中的可见性是不一样的),来确定是否将该Scene Node调用registerNodeForRendering。并且迭代调用自己的子节点。Scene Manager会在每一帧中调用OnRegisterSceneNode来促发这个过程。

virtual void OnAnimate(u32 timeMs)
对于该Scene Node的时间驱动接口。在每一帧中,Scene Manager会调用OnAnimate来促发。实际上Scene Manager整个Engine中Scene的Root。他本身就是一个Scene Node。

virtual void render() = 0;
对于该Scene Node的渲染接口,该接口应该完成这个Scene Node的渲染操作,注意是自己,与自己的子节点是独立的。在该接口中需要设定好Driver状态和自己的World矩阵,然后把自己渲染出来。(Scene Manager自己已经设定好了View和Project Matrix。在Camera Pass中设定好)。

virtual const core::aabbox3d& getBoundingBox() const = 0;
该Scene Node提供一个Bounding Box供cull使用。在Irrlicht中使用AABB 进行监测。

virtual video::SMaterial& getMaterial(u32 num)
提供该Scene Node的Material。

virtual u32 getMaterialCount() const
和getMaterial接口配套使用
阅读(598) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~