OSG嵌入MFC多文档例子

首先在osg文件夹下的example下面找到osgviewerMFC。注意有关osg的方法声明和实现在MFC_OSG.h和MFC_OSG.cpp的cOSG类中。

代码如下:与官方略有不同

#pragma once

#include <osgViewer/Viewer>
#include <osgViewer/ViewerEventHandlers>
#include <osgViewer/api/win32/GraphicsWindowWin32>
#include <osgGA/TrackballManipulator>
#include <osgGA/KeySwitchMatrixManipulator>
#include <osgDB/DatabasePager>
#include <osgDB/Registry>
#include <osgDB/ReadFile>
#include <osgUtil/Optimizer>
#include <string>


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; }
    bool Done(void) { return mDone; }
    //static void Render(void* ptr);//	渲染

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

private:
    bool mDone;
    std::string m_ModelName;//	模型名
    HWND m_hWnd;	//	窗口句柄
    osgViewer::Viewer* mViewer;
    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操作器
};

class CRenderingThread : public OpenThreads::Thread
{
public:
    CRenderingThread( cOSG* ptr );
    virtual ~CRenderingThread();

    virtual void run();

protected:
    cOSG* _ptr;
    bool _done;
};


// MFC_OSG.cpp : implementation o
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值