天龍八部制作教程.docVIP

  • 4
  • 0
  • 约6.83千字
  • 约 7页
  • 2016-10-18 发布于重庆
  • 举报
天龍八部制作教程

天龙八部制作教程及源码第一辑 一步一步来吧... 把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 Renderi

文档评论(0)

1亿VIP精品文档

相关文档