1. 程式人生 > >應用MFC框架顯示OSG

應用MFC框架顯示OSG

應用MFC框架顯示OSG

Osg/Example/osgviewerMFC裡的MFC_OSG框架:

class cOSG
{
public:
    cOSG(HWND hWnd);
    ~cOSG();

    void InitOSG(std::string filename);       //初始化OSG,filename為要加入的模型檔案
    void InitManipulators(void);     //初始化操作器
    void InitSceneGraph(void);      //初始化場景 
    void InitCameraConfig(void);     //相機配置
    void SetupWindow(void);       //建立視窗
    void SetupCamera(void);       //建立相機
    void PreFrameUpdate(void);      //繪製前處理
    void PostFrameUpdate(void);      //繪製後處理
    void Done(bool value) { mDone = value; }  //setDone
    bool Done(void) { return mDone; }         //getDone
    static void Render(void* ptr);            //渲染,可啟用為全域性執行緒

    osgViewer::Viewer* getViewer() { return mViewer; }   //getViewer

private:
    bool mDone;         //Done
    std::string m_ModelName;     //模型名
    HWND m_hWnd;        //視窗控制代碼
    osgViewer::Viewer* mViewer;     //viewer
    osg::ref_ptr<osg::Group> mRoot;    //場景根節點
    osg::ref_ptr<osg::Node> mModel;    //場景模型檔案
    osg::ref_ptr<osgGA::TrackballManipulator> trackball; //trackball操作器
    osg::ref_ptr<osgGA::KeySwitchMatrixManipulator> keyswitchManipulator;   //加入KeySwitch選擇操作器
};

osgviewer顯示於MFCView

1,建立MFC應用程式工程

2,在OSG原始碼的example裡選出osgviewerMFC工程裡的MFC_OSG.hMFC_OSG.cpp匯入到我們的工程裡。


3,在stdafx.h裡新增 #include <process.h>

   在View類裡新增


   並在View類裡新增訊息響應:OnCreate()訊息,

   並overrides裡重寫OnInitialUpdate(),如下:


4,新增OSG庫和動態連結

5編譯,執行後如下: