在ogre中一个Viewpor中显示的内容是一个Camera从场景中的某个观察视角所“看到”场景的呈现。一个viewport只能有一camera作为资源。要实现“画中画”的效果,主要了解一下addViewport()函数;
addViewport()函数:
其原型:Viewport *addViewport(Camera *cam,int ZOrder=0,float left=0.0f,float top=0.0f,float width=1.0f,float height=1.0f)
第一个参数:即指向所使用的擦么camera;
ZOrder:代表该viewport的在所有中Z轴次序,ZOrder值大的viewport覆盖在值小的viewport上;
其它参数的取值范围:0~1;
一个简单的例子代码:
#include"ExampleApplication.h"
class MyApp: public ExampleApplication
{
public:
void createScene()
{
Ogre::SceneNode *mNode=mSceneMgr->getRootSceneNode()->createChildSceneNode();
Ogre::Entity *ent=mSceneMgr->createEntity("robot.mesh");
mNode->attachObject(ent);
Ogre::Camera *mCam=mSceneMgr->createCamera("MyCamera");
mCam->setPosition(0,100,200);
mCam->lookAt(0,0,0);
mCam->setNearClipDistance(5);
Ogre::Viewport *vp= mWindow->addViewport(mCam,1,0,0,0.3,0.5); //ExampleApplication中以创建一个viewport它的ZOrder=0;
mCam->setAspectRatio(Ogre::Real(vp->getActualWidth())/Ogre::Real(vp->getActualHeight()));
vp->setBackgroundColour(Ogre::ColourValue(0,0,1));
}
};
int main()
{
MyApp app;
return app.go();
}
效果图: