zoukankan      html  css  js  c++  java
  • Ogre的ExampleApplication阅读

    Ogre的ExampleApplication从Root开始建造一个基本的Ogre应用程序框架,一边看一边把步骤记录下来,不一定是对的,反正差不多:

    1.首先是构造函数,ExampleApplication需要构造一个实例,构造函数中将一个Root(Ogre中最基本的东西)和一个FrameListener(用于监听每一帧的输入等信息)指向0。之后,根据不同平台,分别定义了资源文件和配置文件目录。

    #ifdef USE_RTSHADER_SYSTEM
    mShaderGenerator = NULL;
    mMaterialMgrListener = NULL;
    #endif

    这段东西是干嘛的不知道,看起来好像是用个XX的话就不需要mShaderGenerator和mMaterialMgrListener了,后面对USE_RTSHADER_SYSTEM直接无视了,以后再研究是啥玩意。



    2.解析函数删除创建的一堆东西



    3.然后进入go方法。go是ExampleApplication的主要方法,在这个方法中程序执行了读取配置文件,读取资源文件,创建场景、摄像机、视口等一系列事情,然后进入渲染循环,并在退出循环后清理。



    4.go方法中的读取配置文件等工作是在setup方法中实现的。其中,如果显示配置界面(showConfigDialog)如果不成功,会导致setup方法返回false,程序直接退出。



    5.setup这个方法干的活很多:

    首先创建了最关键的Root对象mRoot;

    然后定义了资源配置文件;

    接下来显示配置界面(Ogre实例程序中启动时那个选择D3D或OpenGL渲染的界面),如果显示失败,则返回false,程序就挂了。如果不想每次都启动该界面,用Root的restoreConfig() 判断一下即可。

    if (!mRoot->restoreConfig() && !mRoot->showConfigDialog())
    {
    MessageBoxEx(NULL,L"Load Config Error",L"Exception",MB_OK,0);
    }



    6.读取界面视频设置后,在chooseSceneManager方法中创建了一个名为ExampleSMInstance的SceneManager;接下来在createCamera中创建名为PlayerCam的摄像机并设置相机的位置,视点(LookAt,就是从哪看过去的)及最近距离(setNearClipDistance,防止相机太近看到背景边缘什么的,对应有一个setFarClipDistance,防止太远把相机放到地表以下);然后在createViewports创建视口Viewport,视口的意思就是在眼睛和投影间切一刀,效果相当于缩小/放大。



    7.TextureManager::getSingleton().setDefaultNumMipmaps(5); 这句用于设置默认的纹理细节,可能和第三章地形的terrain.cfg里的DetailTexture效果相同。



    8.createResourceListener方法是空的,需要重写才行,不过根据基础教程中的使用,貌似暂时不用也不影响程序跑。



    9.loadResource方法中使用ResourceGroupManager::getSingleton().initialiseAllResourceGroups()根据配置文件将资源都读出,使用此方法貌似程序启动会很慢,开始鼠标等待的时间大概都是在干这个。



    10.createScene,抽象函数,需要在子类中实现,必须在子类中实现,不实现不能创建对象。



    11.createFrameListener创建了一个帧监听,用于监听输入什么的。



    12.setup完毕后,进入渲染循环。



    大概就这么回事

  • 相关阅读:
    iOS中调用短信、电话、邮件、Safari浏览器API
    oc中的反射机制
    UIImage图片处理:缩放、设定大小、存储 (转载)
    UIView上的滑动手势及动作
    UISearchBar相关
    Kali渗透测试——利用metasploit攻击靶机WinXP SP1
    Kali渗透测试——利用metasploit攻击靶机WinXP SP1
    MATLAB求解非齐次线性方程组
    MATLAB求解非齐次线性方程组
    MATLAB测试机器零阈值的大小
  • 原文地址:https://www.cnblogs.com/punkrocker/p/1997085.html
Copyright © 2011-2022 走看看