OGRE基础1

 

Ogre整个流程:

用OgreAppWizard默认选项创建一个工程test,AppWizard会由类BaseApplication继承一个派生类test,作为主要工作类。

 

调用WinMain():

WinMain()中声明游戏对象test3 app,调用游戏对象的go函数app.go()

go是除构造析构函数外唯一的public函数,它一运行表示整个Ogre程序开始运行。

go()中先调用setup()设置,设置不成功返回

setup()中动态生成Root对象mRoot,调用configure()函数设置比如全屏、渲染器、抗锯齿之类的参数。

configure()中showConfigDialog()调出设置窗口,也就是下图

设置完成点击OK后,mWindow = mRoot->initialise(true, "test3 Render Window");创建渲染的主窗口并链接到mWindow,接着生成图标,至此configure()结束。

回到setup()接着运行chooseSceneManager()函数选择场景管理器,接着调用createCamera()创建摄像机,createViewports()创建视角。

Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);接着设置纹理级别?

调用createResourceListener()生成资源监听器,loadResources()载入资源,createFrameListener()生成框架监听器,createScene()生成场景,至此setup结束,所有需要的设置已经设置完毕。

回go()函数,然后mRoot->startRendering()开始渲染。

 

 

chooseSceneManager(): 场景管理器的创建

void BaseApplication::chooseSceneManager(void)

{

        // Get theSceneManager, in this case a generic one

        mSceneMgr= mRoot->createSceneManager(Ogre::ST_GENERIC);

}

这个例子中就在该函数里面直接创建了一个通用的场景管理器,并链接到mScenceMgr。

 

createCamera(): 摄像机的创建

void BaseApplication::createCamera(void)

{

// Createthe camera

//用场景管理器mScenceMgr在当前场景内创建了一个摄像机

   mCamera = mSceneMgr->createCamera("PlayerCam");

 

//Position it at 500 in Z direction

//设置摄像机位置,用三维坐标描述

   mCamera->setPosition(Ogre::Vector3(0,0,80));

// Lookback along Z

//设置摄像机焦点位置,用三维坐标描述

mCamera->lookAt(Ogre::Vector3(0,0,-300));

//设置远距离裁剪,相当于摄像头的有效摄影距离,在此距离外的物体不会被渲染,提高性能

   mCamera->setNearClipDistance(5);

 

   mCameraMan = newOgreBites::SdkCameraMan(mCamera);   // create a default camera controller

}

createViewports():视口的创建

void BaseApplication::createViewports(void)

{

// Createone viewport, entire window

//将mCamera拍到的视口给目前的窗口,占据整个窗口

Ogre::Viewport*vp = mWindow->addViewport(mCamera);

//设置背景颜色

   vp->setBackgroundColour(Ogre::ColourValue(0,0,0));

 

// Alterthe camera aspect ratio to match the viewport

//设置相机的宽高比,与视口宽高比匹配,getActualWidth和getActualHeight获得实际宽度高度,相除即为宽高比

   mCamera->setAspectRatio(

       Ogre::Real(vp->getActualWidth())/ Ogre::Real(vp->getActualHeight()));

}

OGRE三个重要名词:

场景节点(ScenceNode)

         Ogre中的对象只有跟场景节点绑定了之后才能被渲染,场景节点也可以与场景节点绑定,作为父场景节点里面的子场景节点,

        

实体(Entity)

         Ogre中可以渲染的对象称为实体,实体只有与场景节点绑定了才可以被渲染,实体并不是被放在场景中(像OpenGL那样),而是在绑定的同时添加位置名称方向等相关信息,来决定实体在场景中的信息。

 

场景管理器(ScenceManager)

         屏幕上所以的东西都是有场景管理器来管理的,比如灯光、摄像机,场景管理器会记录他们的信息,也可以通过场景管理器设置他们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值