Ogre嵌入MFC傻瓜完全教程(二)

2021-06-22 01:57:23 字數 2805 閱讀 8487

我們再找到setup()的定義看到裡面做的事情就比較多了。

1、new了乙個 root 物件 mroot ,這個mroot非常重要,它貫穿整個ogre應用的始終。

2、呼叫 setupresources() 通過它的原始碼我們知道它主要完成的是配置資源的功能。

3、呼叫 cofigure() 顯示配置視窗,手動配置渲染系統的屬性。

4、呼叫 choosescenemanager() 選擇場景管理器

5、呼叫 createcamera() 建立攝像機

6、呼叫 createviewports() 建立視口

7、呼叫 setdefaultnummipmaps() set default mipmap level

8、呼叫 createresourcelistener() 資源偵聽

9、呼叫 loadresources() 載入資源

10、呼叫 createscene() 建立場景

11、呼叫 createframelistener() 建立幀監聽 

這個setup()函式中的這些工作基本上就是ogre的全部工作了,由於我們現在的任務是如何渲染場景至mfc視窗,所以我就不再對各個函式進行詳細解釋了,等後面用到再詳細介紹。

標頭檔案

#pragma once

#include "ogre.h"

#include "ogreconfigfile.h"

#include "ogreframelistener.h"

#include "ogrestringconverter.h"

#include "ois.h"

#include #include using namespace ogre;

ogre::camera* getcamera(void) const

ogre::scenenode* getcamnode(void) const

ogre::scenemanager* getscenemanager(void) const

ogre::renderwindow* getrenderwindow(void) const

bool go(crect rt, hwnd hwnd);

void createroot(void);

void setupresources(void);

void setuprendersystem(void);

void createrenderwindow(hwnd m_hwnd, int width, int height);

int initializeresourcegroups(void);

void choosescenemanager(void);

void createcamera(void);

void createviewport(void);

void createscene(void);

void createframelistener(void);

private:

ogre::root* mroot;

ogre::renderwindow* mwindow;

ogre::scenemanager* mscenemgr;

ogre::camera* mcamera;

ogre::scenenode* mcamnode;

ogrebites::sdkcameraman* mcameraman; // basic camera controller

// class caogreframelistener* mlistener;

ogre::light* light;

};

原始檔

#include "stdafx.h"	}}

//建立幀監聽

宣告兩個變數

public:

bool m_firstdraw;//初次渲染

3、在view類的建構函式中將m_firstdraw 初始化為ture;

在view類的ondraw()函式中新增如下**

void cogretest2view::ondraw(cdc* /*pdc*/)

} catch( ogre::exception& e )

}

4、在類嚮導中為view類新增wm_timer 訊息處理函式

void cogretest2view::ontimer(uint_ptr nidevent)

cview::ontimer(nidevent);

}

5、在類嚮導中為view類新增wm_erasebkgnd訊息處理函式

bool cogretest2view::onerasebkgnd(cdc* pdc)

6、將d:\ogresdk_vc10_v1-8-1中的bin和media資料夾複製到專案的根目錄下,也就是和原始檔同一級的目錄下

此時生成,執行會得到下面的執行結果

選擇渲染系統,配置引數後點ok,ogre的腦袋就華麗麗的出現了~

Ogre 分析系列完全篇

ogre分析之設計模式 四 摘要 iterator observer strategy template method 閱讀全文 ogre分析之設計模式 三 摘要 ogre分析之設計模式 chain of responsibility 閱讀全文 ogre分析之設計模式 二 摘要 分析ogre用到的設...

將ogre 嵌入到 Qt中

我用的環境是vs2008 qt 2,新增幾個檔案如下 fogrewidget.h include 如果為假就返回 ifndef false return define false return h,r if h return r endif ifndef degug define degug end...

VTK VTK嵌入MFC成功

vtk作為醫學顯示庫,得到較多使用。作為較為上層的設計,對opengl進行了封裝,並且有windows linux 安卓等開發版本,可移植性較強。不過ves暫時沒有編譯成功。以下是嵌入mfc idc 有個缺陷,暫時沒能修改。showpointsinvtk short depthimage,int h...