现在的位置: 首页 > 综合 > 正文

应用MFC框架显示OSG

2018年04月02日 ⁄ 综合 ⁄ 共 1283字 ⁄ 字号 评论关闭

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

 

抱歉!评论已关闭.