青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Sunshine Alike

半完美主義

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  35 Posts :: 1 Stories :: 56 Comments :: 0 Trackbacks

常用鏈接

留言簿(15)

積分與排名

  • 積分 - 51074
  • 排名 - 451

最新隨筆

最新評論

 關于引擎本身不再多加描述,我也沒搞明白,但是最近又要用,學習ing
首先這次先生成一個空白窗口,不使用SDK帶的Example。
文件:
MyApplication.h
MyListener.h
main.cpp

首先需要了解一下Ogre程序的基本結構,在Ogre里使用一個叫場景管理器(SceneManager)的類來管理在屏幕上顯示的各種物體,
這個類是個抽象類(class Ogre::SceneManager abstract),只起到定義接口的作用。
不可以直接實例化這個類,只能由Root節點調用createSceneManager方法來生成特定類型的SceneManager
OGRE里有很多種場景管理器。有的場景管理器渲染地面,有的場景管理器渲染BSP表等等。

與場景(Scene)相關的概念:實體,節點。
實體:簡單的說實體就相當于空間中的一個物體,例如游戲中的一個角色。
場景節點:要想在場景中使用實體,必須還要用到節點(SceneNode),它會與實體綁定在一起,當控制這個節點進行各種位移旋轉操作時
其對應的實體也就跟著相應的進行操作。
##注:
根據以前玩游戲的經驗,在游戲(比如飛行射擊)中判斷一個物體是否被打中也都是以圓點為中心的一個區域而非物體(飛機)本身
外殼的形狀可能也是由于這個原因。
##

接下來再來了解一下一個重要的函數void MyApplication::go()
這是一個入口函數,這一次在我的main方法里就只有兩行代碼:
       MyApplication app;
       app.go();
現在來看看go里有做了些什么事情。
   void go()
   {
       //step 1 to 3 should be in this order
       CreateRoot();
       SetupRenderSystem();
       CreateRenderWindow();

       SetupInputSystem();
       CreateFrameListener();
       StartRenderLoop();
   }
前面的三步需要按特定的順序來進行,后面的則不一定。各個函數的功能由函數名自說明了,內容也很簡單。
調用go后,首先需要創建根節點m_pRoot = new Root()這是整個引擎中最核心的一個對象,在做其它事情前必須要首先創建它。
接下來設置渲染系統SetupRenderSystem() :
       if(!m_pRoot->showConfigDialog())
           exit(0);
Ogre有個默認的設置對話框,直接調用它就可以了,如果用戶取消這一步,那么直接退出程序就好。

創建窗口這一步,可以有多種選擇,因為部分內容跟具體的操作系統相關,可以使用Windows SDK或者MFC生成窗口,也可以使用
Ogre默認的窗口系統,為了簡便,這里使用Ogre默認窗口
       m_pRoot->initialise(true, "MyApplication Rendering Window");

由于是空的窗口,所以不需要生成場景及做相關的工作。在這次的程序中,將要監聽一個鍵盤事件,按下ESC的時候退出程序。
這部分工作在接下的兩個函數SetupInputSystem和CreateFrameListener中完成。

FrameListener是一個幀監聽器,顯示器上的圖像都是一幀一幀的顯示出來的,我們可以在這切換這些幀的時候做一些處理工作,
比如,獲取和處理鍵盤事件。在Ogre的主循環中大概可能會是這個樣子:
  1. Root object調用frameStarted方法在所有已經注冊的FrameListeners中。
  2. Root object渲染一幀。
  3. Root object調用frameEnded方法在所有已經注冊的FrameListeners中。

在這里添加一個MyListener類用來做這件事情。
class CombatListener : public FrameListener
{
public:
   CombatListener(OIS::Keyboard *pkeyboard)
       : m_pKeyboard(pkeyboard)
   {
   }

   bool frameStarted(const FrameEvent& evt)
   {
       m_pKeyboard->capture();
       return !(m_pKeyboard->isKeyDown(OIS::KC_ESCAPE));
   }

private:
   OIS::Keyboard *m_pKeyboard;
};
同樣的,Ogre也已經準備好了一個基類,只需要繼承再稍加修改就可以了,其中OIS是Object Oriented Input System,
它本身不屬于Ogre,是一個簡單易用的跨平臺開源系統,可以用它來處理鍵盤鼠標和游戲手柄等設備。
這里我在每一幀開始的時候獲取鍵盤狀態,當ESC鍵按下時,返回false,這將導致程序正常退出。

OIS使用一個統一的InputManager,它比較難配置,但一旦正確地創建之后,非常好使用。 首先在SetupInputSystem方法中加入
       size_t windowHnd = 0;
       std::ostringstream windowHndStr;
       OIS::ParamList pl;
       RenderWindow *win = m_pRoot->getAutoCreatedWindow();

       win->getCustomAttribute("WINDOW", &windowHnd);
       windowHndStr<<windowHnd;
       pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
       m_pInputManager = OIS::InputManager::createInputSystem(pl);
說明一點,getCustomAttribute方法的功能是用來獲取特定平臺的信息,在API上用一個詞Horrid來形容這個方法,哈哈,無奈D3D需要這些信息。
下面再把下面的代碼回到SetupInputSystem方法中就OK了。
       try
       {
           m_pKeyboard = static_cast<OIS::Keyboard*>(
               m_pInputManager->createInputObject(OIS::OISKeyboard, false));
       }
       catch(const OIS::Exception &e)
       {
           throw Exception(42, e.eText, "MyApplication::SetupInputSystem()");
       }

InputSystem設置好了,就可以使用幀監聽器了,在創建幀監聽器的方法中:
       m_pListener = new MyListener(m_pKeyboard);
       m_pRoot->addFrameListener(m_pListener);
好,到這里程序基本上完成了,剩下只需要啟動渲染循環(StartRenderLoop)就可以讓程序跑起來了
       m_pRoot->startRendering();


posted on 2009-10-28 22:33 Sunshine Alike 閱讀(846) 評論(0)  編輯 收藏 引用 所屬分類: 游戲開發
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产裸拍裸体视频在线观看乱了| 欧美精品在线观看91| 亚洲欧美韩国| 在线视频亚洲| 亚洲精品婷婷| 亚洲亚洲精品在线观看| 午夜精品福利一区二区三区av | 亚洲欧洲日本一区二区三区| 精品99一区二区| 亚洲高清不卡| 一区二区三区四区国产精品| 亚洲欧美在线看| 久久久久九九视频| 欧美国产专区| 一本到12不卡视频在线dvd| 亚洲欧美不卡| 久热精品在线| 国产精品久久国产精品99gif | 夜夜嗨网站十八久久| 亚洲综合电影| 久久久久久久综合色一本| 欧美激情一区二区| 国产乱码精品一区二区三区忘忧草 | 久久精品视频一| 欧美激情国产日韩| 国产人久久人人人人爽| 久久精品视频免费播放| 香蕉免费一区二区三区在线观看| 亚洲欧美日韩直播| 欧美国产日韩a欧美在线观看| 日韩视频一区二区三区在线播放| 亚洲欧美色婷婷| 欧美成人免费大片| 国产午夜一区二区三区| 亚洲美女在线国产| 久久免费偷拍视频| 亚洲伊人观看| 欧美精品一区二区三区在线播放| 国产亚洲欧美日韩日本| 一卡二卡3卡四卡高清精品视频| 久久九九精品| 一区二区三区日韩欧美精品| 免费成人在线观看视频| 国产午夜精品一区二区三区视频| 亚洲性图久久| 亚洲精品在线视频| 蜜臀91精品一区二区三区| 国产一区二区三区四区hd| 亚洲综合视频1区| 亚洲啪啪91| 毛片av中文字幕一区二区| 国产亚洲综合在线| 午夜精品99久久免费| 亚洲天堂男人| 欧美午夜精品伦理| 亚洲视频免费| 亚洲狼人综合| 欧美人牲a欧美精品| 亚洲精品男同| 亚洲国产精品小视频| 美女诱惑黄网站一区| 娇妻被交换粗又大又硬视频欧美| 久久精品久久99精品久久| 亚洲主播在线播放| 国产日韩一区在线| 欧美中文字幕在线播放| 午夜久久黄色| 国产综合激情| 美乳少妇欧美精品| 蜜臀av一级做a爰片久久| 在线观看亚洲视频啊啊啊啊| 欧美成人免费小视频| 久久精品一区二区三区四区| 影音欧美亚洲| 亚洲大片av| 欧美另类videos死尸| 亚洲色图自拍| 午夜精品一区二区三区四区 | 狠狠综合久久| 欧美激情精品| 欧美黑人多人双交| 亚洲一区二区三区在线观看视频| 亚洲毛片视频| 国产乱码精品| 欧美高清自拍一区| 欧美日韩国产探花| 亚洲一区二区三区国产| 日韩一级精品视频在线观看| 亚洲人成网站色ww在线| 欧美视频在线观看 亚洲欧| 亚洲欧美日韩精品久久亚洲区| 亚洲欧美网站| 亚洲国产精品成人| 在线视频中文亚洲| 国产一区视频观看| 亚洲精品日韩激情在线电影| 国产精品免费看片| 蜜桃精品久久久久久久免费影院| 欧美电影在线观看| 翔田千里一区二区| 久久一区二区视频| 亚洲男同1069视频| 久久久久久999| 亚洲女性喷水在线观看一区| 久久精品中文字幕一区| 在线一区欧美| 久久午夜精品一区二区| 亚洲综合色激情五月| 老鸭窝毛片一区二区三区| 亚洲主播在线观看| 欧美成年人视频网站欧美| 欧美一区在线看| 欧美激情一区二区三区在线视频观看| 性欧美xxxx大乳国产app| 久久先锋资源| 久久久精品网| 国产精品久久久一本精品| 亚洲高清在线观看| 狠狠色伊人亚洲综合网站色| 亚洲一区精品视频| 日韩视频不卡中文| 久久亚洲国产精品一区二区 | 99国产麻豆精品| 久久狠狠亚洲综合| 午夜精品久久久久| 欧美日韩国产在线| 亚洲国产成人91精品| 怡红院精品视频| 欧美中文日韩| 久久精品国产69国产精品亚洲| 国产精品v日韩精品| 亚洲黑丝在线| 99re热这里只有精品视频| 久久综合五月天婷婷伊人| 欧美一区91| 国产免费一区二区三区香蕉精| 一区二区三区精密机械公司 | 久久综合影音| 国产亚洲一区精品| 久久er精品视频| 久久久久久久久久久久久久一区| 国产精品五月天| 亚洲欧美日韩国产中文在线| 欧美一级在线亚洲天堂| 国产精品久久夜| 性久久久久久| 久久在线视频| 亚洲精品国产精品国自产在线| 欧美成人xxx| 国产精品一区二区黑丝| 亚洲第一中文字幕| 欧美中文在线观看| 久久香蕉国产线看观看网| 国内精品久久久久久久影视蜜臀| 亚洲综合色激情五月| 午夜伦理片一区| 国产精品一区二区三区观看| 亚洲欧美春色| 久久精品人人| 亚洲成色777777女色窝| 欧美肥婆bbw| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久精品欧美| 影音先锋久久| 欧美人妖另类| 亚洲欧美一区二区三区极速播放| 久久免费精品日本久久中文字幕| 亚洲国产精品视频一区| 欧美日韩亚洲不卡| 欧美在线观看视频在线| 亚洲成色www久久网站| 中文久久精品| 国产酒店精品激情| 美女在线一区二区| 亚洲神马久久| 欧美国产日韩免费| 欧美一级理论性理论a| 亚洲欧洲久久| 国产亚洲欧美日韩美女| 欧美日韩1区2区| 久久国产精品色婷婷| 99re6热在线精品视频播放速度| 欧美一区二粉嫩精品国产一线天| 亚洲激情偷拍| 国产精品亚洲综合天堂夜夜 | 国产婷婷色一区二区三区在线| 浪潮色综合久久天堂| 亚洲一区二区毛片| 亚洲国产日韩美| 久久久久久久综合色一本| 亚洲视频一区在线| 在线观看日韩www视频免费| 国产精品国产a级| 欧美岛国激情| 久久亚洲精品一区二区| 午夜精品久久久久久久久久久| 91久久精品日日躁夜夜躁欧美 | 一本色道久久综合| 欧美顶级少妇做爰| 久久免费的精品国产v∧|