- 9
- 0
- 约6.65千字
- 约 7页
- 2017-01-13 发布于北京
- 举报
《天龙八部制作教程
天龙八部制作教程及源码第一辑
一步一步来吧...
把OGRE嵌入到MFC里面,并实现了OIS缓冲输入和鼠标显示,看图:
具体实现方法:
一 最好抛弃示例框架,实现一个自己的框架,因为有些东西需要修改,有些东西要自己实现,我自己写了一个框架demo来嵌入MFC,看简洁不少
// 我的帧监听类class MyFrameListener : public FrameListener, public OIS::MouseListener, public OIS::KeyListener{public:
MyFrameListener(OgreDemo* app, HWND hMainWnd); ~MyFrameListener(); bool frameStarted(const FrameEvent evt);
bool mouseMoved(const OIS::MouseEvent e); bool mousePressed(const OIS::MouseEvent e, OIS::MouseButtonID id); bool mouseReleased(const OIS::MouseEvent e, OIS::MouseButtonID id); bool keyPressed(const OIS::KeyEvent e); bool keyReleased(const OIS::KeyEvent e);
protected: SceneManager *mSceneMgr; SceneNode* mCamNode;
OIS::Keyboard* mKeyboard; OIS::Mouse* mMouse; OIS::InputManager* mInputManager;
Real mRotate; // 旋转常量 Real mMove; // 运动常量 bool mContinue; // 是否要继续渲染 Vector3 mDirection; // 指向正确的移动方向};
class OgreDemo{public: OgreDemo():mRoot(0), mWindow(0), mListener(0), mCamera(0), mSceneMgr(0),mCamNode(0) { } ~OgreDemo();
void setup(HWND m_hWnd, int width, int height, HWND hMainWnd);
// 获得成员变量 Root* getRoot(void) const {return mRoot;} Camera* getCamera(void) const {return mCamera;} SceneNode* getCamNode(void) const {return mCamNode;} SceneManager* getSceneManager(void) const {return mSceneMgr;} RenderWindow* getRenderWindow(void) const {return mWindow;}
private: Root* mRoot; RenderWindow* mWindow; SceneManager* mSceneMgr; Camera* mCamera; SceneNode* mCamNode; MyFrameListener* mListener;
void createRoot(); void defineResources(); void setupRenderSystem(); void createRenderWindow(HWND m_hWnd, int width, int height); void initializeResourceGroups(); void setupScene(); void createFrameListener(HWND hMainWnd);};
二, 具体过程分析
首先,因为用MFC打开,我们要去掉弹出的配置框,自己把渲染系统参数设置好:
void OgreDemo::setupRenderSystem(){
// 自己设置 RenderSystem *rs = mRoot-getRenderSystemByName(Direct3D9 Rende
原创力文档

文档评论(0)