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作为换肤控件,只需要在您的程序中添加一行代码,就能让 ...
随机推荐
- 51nod 2497 数三角形
小b有一个仅包含非负整数的数组a,她想知道有多少个三元组(i,j,k),满足i<j<k且a[i],a[j],a[k]可能作为某个三角形的三条边的边长. 收起 输入 第一行输入一个正整数 ...
- littlefs了解一下
littlefs是一个文件系统,断电数据不会出异常,适合IOT场景.
- 如何防护DDOS攻击策略
DDoS是目前最凶猛.最难防御的网络攻击之一.现实情况是,这个世界级难题还没有完美的.彻底的解决办法,但采取适当的措施以降低攻击带来的影响.减少损失是十分必要的.将DDoS防御作为整体安全策略的重要部 ...
- Oracle数据库的分页
Oracle的分页 ORACLE支持一个关键字ROWNUM,ROWNUM是一个伪列,该列不存在于任何一张表中,但是每张表都可以查询该列. 而该列在结果集的中值是结果集中每条记录的"行号&qu ...
- oracle lock
数据库锁介绍: https://www.cnblogs.com/springsnow/p/9990295.html#_label2_0 总结1:查询oracle锁定的表: 1.锁相关表 SELECT ...
- python实现抽样分布描述
本次使用木东居士提供数据案例,验证数据分布等内容, 参考链接:https://www.jianshu.com/p/6522cd0f4278 #数据读取 df = pd.read_excel('C:// ...
- Idea和eclipse安装activiti插件
eclipse安装:help>install new software>add 有外网状态下 输入 :http://www.activiti.org/design ...
- docker的笔记
docker run 命令 docker run ubuntu:15.10 /bin/echo "Hello world" 各个参数解析: docker: Docker 的二进制执 ...
- 1090 Highest Price in Supply Chain (25)(25 分)
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...
- Python里面如何生成随机数?
import randomrandom.random()它会返回一个随机的0和1之间的浮点数