应用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,编译,运行后如下: