在我看来,渲染到纹理和渲染到某个窗口其实没多大区别,如果一定要说点区别,那就是渲染的目标不同,后者是窗口,前者是某个纹理。
下面列出摘抄自某网友博客上的关于渲染到纹理的三部曲:
1、创建渲染目标纹理,关键要指定TU_RENDERTARGET参数,在创建这个渲染目标纹理的过程中,Ogre会自动调用 Root::getSingleton().getRenderSystem()->attachRenderTarget把这个纹理添加到Root的渲染目标中,也就是说每帧都会渲染到这个纹理。
TexturePtr texture = TextureManager::getSingleton().createManual( "RttTex",
ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, TEX_TYPE_2D,
512, 512, 0, PF_R8G8B8, TU_RENDERTARGET );
2、获得渲染目标,有了渲染目标,才能给目标指定视口和摄像机
RenderTarget *rttTex = texture->getBuffer()->getRenderTarget();
3、给这个渲染目标指定摄像机,做了这步骤之后,每帧更新时就会把这个摄像机看到的东西渲染到texture中
Viewport *v = rttTex->addViewport( mReflectCam );