Ogre应用之一MFC+Ogre+OSI搭建
by:唐崇(theone7)
虫子||CSDN技术博客(http://blog.csdn.net/theone7)
引言:这系列的文章来自于学校毕业设计的选题—“3D售楼处”,在小组中我负责3D图形的渲染,采用的是Ogre引擎来做。由于在准备研究生,断断续续地用将近一个的月的时间完成了一个Demo。
一、将Ogre嵌入MFC框架
用过Ogre的同学都知道:在SDK中,官方提供了一个很好的例子来介绍如何使用Ogre。而网上很多教程是直接继承例子中的类来实现想要的工作的,感觉这会多出很多不需要的东西。所以在我的Demo中是直接新建一个类,只加上自己想要的东西。(下面只列出了本文有关的代码)
class COGRE_Manager
{
//单例模式构建{
{
private:
explicit COGRE_Manager();
public:
~COGRE_Manager();
inline static COGRE_Manager& GetSingleton(){
static COGRE_Manager m_ogreManager;
return m_ogreManager;
}
//单例模式构建结束}}
//<功能接口>:
public:
//初始化
bool StartUp(HWND m_hWnd, int width, int height ,HWND hMainWnd);
//<数据接口>:
public:
//< 获得私有成员变量>:
//ogre根对象
Ogre::Root* GetRoot(void) const {return mRoot;}
//摄像机对象
Ogre::Camera* GetCamera(void) const {return mCamera;}
//场景管理器对象
Ogre::SceneManager* GetSceneManager(void) const {return mSceneMgr;}
//渲染窗口对象
Ogre::RenderWindow* GetRenderWindow(void) const {return mWindow;}
//<私有方法>:
private:
//创建ogre根对象
void CreateRoot();
//设置渲染系统
void SetupRenderSystem();
//创建渲染窗口
void CreateRenderWindow(HWND m_hWnd, int width, int height);
//渲染场景管理器
void ChooseSceneManager();
//创建摄像机
void Creat