OSG入门教程04.03:与Qt集成

分析先打开osg库的头文件目录

可以看到有个osgQOpenGL,也就是说osg集成了QOpenGLWidget相关类。

pro创建一个QWidget工程,修改工程文件

123INCLUDEPATH += $$PWD/osg/includeLIBS += -L$$PWD/osg/lib -losgd -losgViewerd -losgUtild -losgDBd -losgQOpenGLd \ -losgGAd 声明在widget.h中添加声明和定义

1234567#include "osgQOpenGL/osgQOpenGLWidget"protected slots: void initWindow();protected: osgQOpenGLWidget *m_pOSGQOpenGLWidget; 实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include#include#include#include#include#include#include #include #include #include #include #include #include #include /// osgGA::TrackballManipulator#include /// osgViewer::StatsHandler#include /// osg::Transform#include /// osg::BoundingSphere::bound()#include /// osg::ShapeDrawable#include #include /// osg::BlendColor#include /// osg::BlendFuncWidget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); m_pOSGQOpenGLWidget = new osgQOpenGLWidget(this); m_pOSGQOpenGLWidget->setGeometry(geometry()); connect(m_pOSGQOpenGLWidget,&osgQOpenGLWidget::initialized,this,&Widget::initWindow);}Widget::~Widget(){ if(m_pOSGQOpenGLWidget){ m_pOSGQOpenGLWidget->deleteLater(); } delete ui;}void Widget::initWindow(){ osgViewer::Viewer* pViewer = m_pOSGQOpenGLWidget->getOsgViewer(); pViewer->setCameraManipulator(new osgGA::TrackballManipulator); osg::Node* node = osgDB::readNodeFile("cow.osg"); pViewer->setSceneData(node);}模型部分和上一篇的代码类似。

还是一样的将dll和模型复制到程序目录。

运行效果

ObjectXXX OSG 库依赖Qt 6.x,我使用的是Qt6.4.3

尽量版本匹配,不要用Qt5创建工程链接Qt6的库,可能会出问题。可以使用基于Qt5.14.2版本的库

友情链接:
Copyright © 2022 暴击魔方福利站 All Rights Reserved.