OffScreen渲染、引擎在各种程序中的使用

在前述所有的例子中,我都以Eberly封装过的应用程序类派生新的应用程序类,然后在其中实现3D渲染。由于应用的需要,我开始让引擎适用于普通的应用程序,比如glut的,比如MFC的,或者更一般的win32程序。显然这样必须在合适的地方进行初始化以及各种设置,目前已经对这所有的都已很好实现。
在3D中有个非常重要的问题就是OffScreen渲染,Eberly引擎并不支持。OffScreen即离屏渲染,使用这种方式的应用非常广,比如在某个场景中渲染水面,我们可以使用离屏渲染的方式把水面之上的所有可能反射的对象渲染到纹理,然后将这个纹理应用到水面渲染之上,在实时情形下就可以实时模拟水面对环境的发射效果。在我们的应用中也涉及到了这样的要求,比如对粒子特效,需要离屏渲染之后,然后把渲染的每帧的结果应用到当前的主渲染中。为了支持离屏渲染,我修改了引擎代码,目前引擎支持以PBuffer和FBO两种方式进行离屏渲染。

图片上绿色是主渲染的背景色,3个光幕的小矩形是采用同一个FBO的纹理,上面的对话框是另外的渲染窗口,其中是魔幻泡泡粒子特效,下面的非模态对话框是时间线调整界面,让粒子特效随帧显示,整个框架是基于MFC的。

posted on 2006-02-22 16:11  CGDeveloper  阅读(702)  评论(0编辑  收藏  举报

导航