#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
viewer = new osgViewer::Viewer;
//必须有这一句,不然报错
viewer->setThreadingModel(viewer->SingleThreaded);//这种方法只能单线程,帧率低
root = new osg::Group;
em = new osgEarth::Util::EarthManipulator;
viewer->setCameraManipulator(em);
earth = osgDB::readNodeFile("clear.earth");
root->addChild(earth);
viewer->setSceneData(root);
viewer->addEventHandler(new osgViewer::StatsHandler);//添加s键帧率显示事件
////窗口大小变化,响应F
//viewer->addEventHandler(new osgViewer::WindowSizeHandler);
//创建场景widget指针
QWidget* sceneWidget = createGraphicsWindow(0, 0, 1920, 1080, "main window", true);
this->setCentralWidget(sceneWidget);
//update每执行一次,则执行paintEvent
connect(&timer, SIGNAL(timeout()), this, SLOT(update())); //update在qwidget内
//10ms执行一次定时器
timer.start(5);
}
MainWindow::~MainWindow()
{
delete ui;
}
QWidget* MainWindow::createGraphicsWindow(int nX, int nY, int nW, int nH, const std::string& strName, bool bWindowDecoration)
{
//显示设置
osg::DisplaySettings* pDS = osg::DisplaySettings::instance().get();
osg::GraphicsContext::Traits* pTraits = new osg::GraphicsContext::Traits(pDS);
//场景内容显示特征
pTraits->windowName = strName;//窗口名称
pTraits->windowDecoration = false;//窗口装饰
pTraits->overrideRedirect = true;//重定向
pTraits->x = nX;//x位置
pTraits->y = nY;//y位置
pTraits->width = nW;//宽
pTraits->height = nH;//高
pTraits->doubleBuffer = true;//双缓存
pTraits->alpha = pDS->getMinimumNumAlphaBits();
pTraits->stencil = pDS->getMinimumNumStencilBits();//模具
pTraits->sampleBuffers = pDS->getMultiSamples();//采样缓存
pTraits->samples = pDS->getNumMultiSamples();
osgQt::GraphicsWindowQt* pGW = new osgQt::GraphicsWindowQt(pTraits);//新建窗口
if (!pGW)
{
return nullptr;
}
if (!viewer)
{
return nullptr;
}
osg::Camera* pCamera = viewer->getCamera();
if (!pCamera)
{
return nullptr;
}
pCamera->setGraphicsContext(pGW);
//背景颜色
pCamera->setClearColor(osg::Vec4(0, 0, 0, 1.0));
//设置窗口放置位置
pCamera->setViewport(new osg::Viewport(0, 0, pTraits->width, pTraits->height));
qDebug() << pTraits->width << " " << pTraits->height;
//设置远近裁截面
pCamera->setProjectionMatrixAsPerspective(30.0f, static_cast<double>(pTraits->width) / static_cast<double>(pTraits->height), 1.0f, 10000.0f);
return pGW->getGLWidget();
}
void MainWindow::paintEvent(QPaintEvent* event)
{
viewer->frame();
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
osgearth在纯qt下的工程代码,高帧率,2060显卡下帧率150多,osgeath在qt下开发的基础框架。如果运行不成功,可以联系本人远程帮忙,vx:osgearth222
资源推荐
资源详情
资源评论
收起资源包目录
osgearth在qt Creater下的工程,qt5.12,编译器msvc2017,osg3.4 osgearth2.8 (113个子文件)
mainwindow.cpp 3KB
moc_mainwindow.cpp 3KB
moc_mainwindow.cpp 3KB
main.cpp 394B
Makefile.Debug 149KB
opengl32sw.dll 19.95MB
opengl32sw.dll 19.95MB
libGLESV2d.dll 19.18MB
Qt5Guid.dll 14.03MB
Qt5Cored.dll 13.38MB
Qt5Widgetsd.dll 11.09MB
Qt5Gui.dll 6.15MB
Qt5Core.dll 5.84MB
Qt5Widgets.dll 5.31MB
qwindowsd.dll 4.01MB
D3Dcompiler_47.dll 3.98MB
D3Dcompiler_47.dll 3.98MB
libGLESV2.dll 3.41MB
qwindows.dll 1.38MB
qwebpd.dll 1.13MB
vccorlib140d.dll 992KB
msvcp140d.dll 978KB
qjpegd.dll 798KB
qtiffd.dll 782KB
concrt140d.dll 763KB
Qt5Svgd.dll 726KB
qwebp.dll 476KB
qjpeg.dll 388KB
qtiff.dll 365KB
qwindowsvistastyled.dll 364KB
Qt5Svg.dll 323KB
qwindowsvistastyle.dll 134KB
vcruntime140d.dll 129KB
qicnsd.dll 128KB
qsvgicond.dll 112KB
qgifd.dll 104KB
qicod.dll 104KB
qtgad.dll 83KB
qsvgd.dll 82KB
qwbmpd.dll 79KB
libEGLd.dll 66KB
qicns.dll 40KB
qsvgicon.dll 35KB
qico.dll 32KB
qgif.dll 31KB
qsvg.dll 25KB
qtga.dll 25KB
qwbmp.dll 23KB
libEGL.dll 18KB
vcredist_x64.exe 14.61MB
osgearthQT.exe 116KB
osgearthQT.exe 51KB
ui_mainwindow.h 2KB
mainwindow.h 1KB
moc_predefs.h 276B
moc_predefs.h 259B
osgearthQT.ilk 1.24MB
Makefile 33KB
mainwindow.obj 870KB
moc_mainwindow.obj 679KB
main.obj 678KB
mainwindow.obj 102KB
main.obj 8KB
moc_mainwindow.obj 7KB
osgearthQT.vc.pdb 10.05MB
osgearthQT.pdb 9MB
osgearthQT.pro 1KB
qt_de.qm 196KB
qt_de.qm 196KB
qt_gd.qm 185KB
qt_gd.qm 185KB
qt_fi.qm 176KB
qt_fi.qm 176KB
qt_ca.qm 176KB
qt_ca.qm 176KB
qt_ru.qm 173KB
qt_ru.qm 173KB
qt_cs.qm 171KB
qt_cs.qm 171KB
qt_da.qm 170KB
qt_da.qm 170KB
qt_fr.qm 162KB
qt_fr.qm 162KB
qt_bg.qm 161KB
qt_bg.qm 161KB
qt_es.qm 161KB
qt_es.qm 161KB
qt_pl.qm 159KB
qt_pl.qm 159KB
qt_it.qm 157KB
qt_it.qm 157KB
qt_hu.qm 157KB
qt_hu.qm 157KB
qt_ar.qm 156KB
qt_ar.qm 156KB
qt_uk.qm 155KB
qt_uk.qm 155KB
qt_lv.qm 150KB
qt_lv.qm 150KB
qt_he.qm 135KB
共 113 条
- 1
- 2
aspiretop
- 粉丝: 767
- 资源: 54
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页