MFC加载大型osg模型
MFC加载模型,发现打开 Navid 缓冲等选项后,加载大型模型的速度就快了很多。
#include "stdafx.h"
#include "OSGObject.h" COSGObject::COSGObject(HWND hWnd)
{
m_hwnd = hWnd;
} COSGObject::~COSGObject()
{ } void COSGObject::InitOSG()
{
InitSceneGraph();
InitCameraConfig();
} void COSGObject::InitSceneGraph()
{
mRoot = new osg::Group;
//mRoot->addChild(osgDB::readNodeFile("D://library.OSGB"));
//mRoot->addChild(osgDB::readNodeFile("I:\\BIM\\osg\\pzy20190722.OSGB"));
//mRoot->addChild(osgDB::readNodeFile("D:\\参考手册\\BIM\\ive\\build20190628.ive"));
mRoot->addChild(osgDB::readNodeFile("I:\\BIM\\osg\\wanluowang20190903.OSGB")); } void COSGObject::InitCameraConfig()
{
RECT rect1;
mViewer = new osgViewer::Viewer;
::GetWindowRect(m_hwnd, &rect1);
osg::ref_ptr<osg::GraphicsContext::Traits> traits1 = new osg::GraphicsContext::Traits;
osg::ref_ptr<osg::Referenced> windata = new osgViewer::GraphicsWindowWin32::WindowData(m_hwnd); traits1->x = ;
traits1->y = ;
traits1->width = rect1.right - rect1.left;
traits1->height = rect1.bottom - rect1.top; traits1->windowDecoration = false;
traits1->doubleBuffer = true;
traits1->sharedContext = ;
traits1->setInheritedWindowPixelFormat = true; traits1->inheritedWindowData = windata;
osg::GraphicsContext* gc1 = osg::GraphicsContext::createGraphicsContext(traits1);
osg::ref_ptr<osg::Camera> camera1 = new osg::Camera;
camera1->setGraphicsContext(gc1); camera1->setViewport(new osg::Viewport(traits1->x, traits1->y,traits1->width,traits1->height));
camera1->setProjectionMatrixAsPerspective(30.3f, static_cast<double>(traits1->width) / static_cast<double>(traits1->height), 1.0, 1000.0); mViewer->setCamera(camera1);
mViewer->setCameraManipulator(new osgGA::TrackballManipulator);
mViewer->setSceneData(mRoot);
mViewer->realize(); mViewer->getCamera()->setComputeNearFarMode(osg::CullSettings::COMPUTE_NEAR_USING_PRIMITIVES);
mViewer->getCamera()->setNearFarRatio(0.000003f); } void COSGObject::PreFrameUpdate()
{ } void COSGObject::PostFrameUpdate()
{ } void COSGObject::Render(void* ptr)
{
COSGObject* osgObj = (COSGObject*)ptr;
osgViewer::Viewer* viewer1 = osgObj->getOsgViewer();
while (!viewer1->done())
{
osgObj->PreFrameUpdate();
viewer1->frame();
osgObj->PostFrameUpdate();
} _endthread();
} osgViewer::Viewer* COSGObject::getOsgViewer()
{
return mViewer;
}

MFC加载大型osg模型的更多相关文章
- Torch 7 load saved model failed, 加载保存的模型失败
Torch 7 load saved model failed, 加载保存的模型失败: 可以尝试下面的解决方案:
- cesium模型加载-加载fbx格式模型
整体思路: fbx格式→dae格式→gltf格式→cesium加载gltf格式模型 具体方法: 1. fbx格式→dae格式 工具:3dsMax, 3dsMax插件:OpenCOLLADA, 下载地址 ...
- 用TWaver加载大型游戏场景一例
游戏中经常会出现一些大型的户外场景,例如一个小镇.一座古城等.通常这种场景中包含了较多的建筑.道路.桥梁等等元素,其3D模型比较大且复杂.在使用TWaver加载时,可使用一些技巧,让加载速度更快.显示 ...
- 懒加载 字典转模型 自定义cell
1 懒加载: 1> 什么是懒加载? 懒加载又称为延时加载,即在系统调用的时候加载,如果系统不调用则不会加载.所谓的懒加载其实就是重写其 get 方法. 2> 特点:在使用懒加载的时候要 ...
- 学习笔记TF016:CNN实现、数据集、TFRecord、加载图像、模型、训练、调试
AlexNet(Alex Krizhevsky,ILSVRC2012冠军)适合做图像分类.层自左向右.自上向下读取,关联层分为一组,高度.宽度减小,深度增加.深度增加减少网络计算量. 训练模型数据集 ...
- MFC加载PNG图片并实现双缓冲
因为PNG包含Alpha通道,所以不同于BITMAP,在MFC中使用CImage类对其进行处理,通常使用load和draw成员函数. 所以标题的论述可以进一步解释为,使用CImage实现双缓冲. 通常 ...
- iOS 懒加载 字典转模型
>>>懒加载 一.介绍 懒加载又称延时加载,即在系统调用时加载,如果系统不调用则不会加载,所谓懒加载其实就是重写其get方法. 在使用懒加载时要先判断该方法是否存在,如果不存在再进行 ...
- tensorflow 模型加载(没有checkpoint文件或者说只加载其中一个模型)
1.如果有checkpoint文件的话,加载模型很简单: 第一步:都是加载图: with tf.Session() as sess: saver=tf.train.import_meta_graph( ...
- MFC加载皮肤 转自:http://www.cctry.com/thread-4032-1-1.html
VC皮肤库SkinSharp 1.0.6.6的使用: SkinSharp又称Skin#,是Windows环境下一款强大的换肤组件.SkinSharp作为换肤控件,只需要在您的程序中添加一行代码,就能让 ...
随机推荐
- 七.Protobuf3 嵌套类型
Protobuf3 嵌套类型 您可以在其他消息类型中定义和使用消息类型,如下例所示:这里Result消息是在SearchResponse消息中定义的: message SearchResponse { ...
- 4.1 vue-resource
全局拦截器.配置全局地址等:
- stm32中使用cubemx配置freertos的信号量大小
在配置freertos的情况下,cubemx会自动计算每个任务.信号,队列和软件定时器的使用堆栈大小,因此要合理规划 信号量默认是88byte 任务根据设定来计算,我默认配置是128,则最终是624b ...
- MySQL Innodb引擎调优
介绍: Innodb给MYSQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎.Innodb锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读.这些特色增加 ...
- MySQL常用五大引擎的区别
MyISAM: 如果你有一个 MyISAM 数据表包含着 FULLTEXT 或 SPATIAL 索引,你将不能把它转换为使用 另一种引擎,因为只有 MyISAM 支持这两种索引. BLOB: 如果你有 ...
- ps -ef、ps aux(查看进程占用内存大小)
Linux下ps -ef和ps aux的区别及格式详解 Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux.这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Uni ...
- 通过django-crontab扩展来实现 定时任务
pip install django-crontab 基本格式 : * * * * * 分 时 日 月 周 命令 M: 分钟(0-59).每分钟用*或者 */1表示 H:小时(0-23).(0表示0点 ...
- Problem 4 dp
$des$ 小 $Y$ 十分喜爱光学相关的问题, 一天他正在研究折射.他在平面上放置了 $n$ 个折射装置, 希望利用这些装置画出美丽的折线.折线将从某个装置出发, 并且在经过一处装置时可以转向, 若 ...
- codevs1504愚蠢的组合数 / RQNOJ愚蠢的组合数
1504 愚蠢的组合数 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 最近老师教了狗狗怎么算组合数,狗狗又 ...
- iframe中用到的例子
<view:qrytr> <view:qrytd colspan="4"> <iframe id="ccbl&quo ...