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作为换肤控件,只需要在您的程序中添加一行代码,就能让 ...
随机推荐
- 解决jdbc向数据库存入数据出现乱码的情况
解决办法 1.修改项目的编码,建议统一使用utf-8来实现,这样整个项目就是utf-8. 2.jdbc:mysql://locathost:3306/数据库名称?useUnicode=true& ...
- Linux 系统 Composer 安装
Composer 是个包管理工具 在项目中使用它会很方便 本文中用 PHP 安装 1.下载安装 执行命令 curl -sS https://getcomposer.org/installer | ph ...
- HDFS中的数据块(Block)
我们在分布式存储原理总结中了解了分布式存储的三大特点: 数据分块,分布式的存储在多台机器上 数据块冗余存储在多台机器以提高数据块的高可用性 遵从主/从(master/slave)结构的分布式存储集群 ...
- md5关于加密
# 导入hashlib模块 import hashlib # 获取MD5对象 # 不加盐操作 # md5 = hashlib.md5() # 加盐操作 md5 = hashlib.md5('wenwe ...
- arp和rarp协议
ARP与RARP详细解析 原创zlnnjit 发布于2016-04-03 15:12:15 阅读数 9544 收藏 展开 地址解析协议 ARP和逆地址解析协议RARP 1.基本关系: 2.地址解析 ...
- 使用对象,面向对象创建div的方式
<script> // //对象div的创建 // var div = document.createElement("div"); // document.body. ...
- js清空数组
js-清空array数组 两种实现方式: 1.splice:删除元素并添加新元素,直接对数组进行修改,返回含有被删除元素的数组. arrayObject.splice(index,howmany,el ...
- Jmeter5.1 Plugins Manager配置dummy使用jp@gc - Dummy Sampler
背景和目的 最近想使用dummy进行mockserver服务器的模拟来实现正则表达式测试,但是发现在选项中没有Plugins Manager可供选择 如果本文对你有帮助,请关注我哦,一起进步.接下来看 ...
- 史上最全java pdf精品书籍整理
算法,多线程,spring,数据库,大数据,面试题等等.喜欢的小伙伴加群获取 QQ群号825199617 (非广告培训技术群,纯java知识交流,请自重)
- docker中部署django项目~~Dockfile方式和compose方式
1. 背景: 本机win10上,后端django框架代码与前端vue框架代码联调通过. 2. 目的: 在centos7系统服务器上使用docker容器部署该项目. 3. 方案一:仅使用基 ...