應用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顯示於MFC的View
1,建立MFC應用程式工程
2,在OSG原始碼的example裡選出osgviewerMFC工程裡的MFC_OSG.h和MFC_OSG.cpp匯入到我們的工程裡。
3,在stdafx.h裡新增 #include <process.h>
在View類裡新增
並在View類裡新增訊息響應:OnCreate()訊息,
並overrides裡重寫OnInitialUpdate(),如下:
4,新增OSG庫和動態連結
5,編譯,執行後如下: