window osgQt编译

编译条件:cmake 3.22 、vs2019 、osgQt源码、编译完成osg3.6.4、Qt5

源码下载:https://github.com/openscenegraph

一、cmake-gui设置

           参数v140 ,设置vs工程使用平台工具集“Visual Studio 2015 (v140)”,如果没有需要不指定空即可。

 二、 修改osgQt源码中CMakeLists.txt,添加下图选中部分:

         (1)add_definitions(-std=c++11) 添加C++11 如果不指定,可能qt会报关于C++11的问题(比如线程相关新结构)。

         (2)set(CMAKE_PREFIX_PATH "D:/Qt/Qt5.12.10/5.12.10/msvc2017_64" CACHE PATH "")       指定自己机器上qt的安装路径。

                 qt也可以这样指定:

                set(Qt5_DIR "D:/SofltwareInstalling/Qt/Qt5.12.10/5.12.10/msvc2017_64/lib/cmake/Qt5" CACHE PATH "")

               如果找不到qt路径会报错:

        By not providing "FindQt5.cmake" in CMAKE_MODULE_PATH this project has
        asked CMake to find a package configuration file provided by "Qt5", but
        CMake did not find one.
        Could not find a package configuration file provided by "Qt5" with any of
        the following names:
        Qt5Config.cmake
        qt5-config.cmake
        Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"
        to a directory containing one of the above files. If "Qt5" provides a
        separate development package or SDK, be sure it has been installed.

        (3)指定需要的osg 库:

         set(OSG_DIR "D:/libraries/osg-3.6.4")

        FIND_PACKAGE(OpenSceneGraph 3.6.4 REQUIRED osg osgDB osgGA osgUtil osgText osgViewer osgWidget)
        SET(OPENSCENEGRAPH_SOVERSION 160)

         在osg库安装路径“include/osg/Version”文件下可以查看OpenSceneGraph 、OPENSCENEGRAPH_SOVERSION 版本号。

        其实osg的搜索module都在cmake的安装路径“\CMake\share\cmake-3.22\Modules”下的FindOpenSceneGraph.cmake。

三、 cmake最终显示

      主义如果是手动指定osg路径,注意OSG_INCLUDE_DIR路径的位置。

           其实,在qt中使用osg(osg嵌入qt窗口),直接将osgQt源码中的两个类 class osgQOpenGLWidget 、class OSGRenderer改写即可,参考osgQt例子中的osgviewerQt.cpp。

### 如何在Qt中使用OSG进行图形渲染或开发3D应用程序 #### QtOSG集成概述 为了使QtOSG能够协同工作,开发者可以利用两者的特性来构建高效的应用程序。OSG作为一个强大的开源场景图库,提供了丰富的功能和性能优化,在计算机图形应用程序中创建交互式3D图形方面表现出色;而Qt作为跨平台应用框架,则以其丰富的UI组件和支持多种操作系统的能力著称[^1]。 #### 开发环境配置 对于希望在Qt环境中引入OSG的支持来说,确保拥有合适的编译器以及正确设置的依赖项至关重要。例如,有经验表明VS2015加上特定版本如osg365能很好地满足这一需求。值得注意的是,虽然网络上有大量关于如何单独编译OSG的信息,但对于想要将其融入到基于Qt的工作流中的情况而言,重点在于理解怎样调整项目结构使之兼容于所选IDE及其关联工具链的要求[^2]。 #### 实现方法论 当准备就绪之后,下一步就是实际编码阶段了。这通常涉及到定义一个继承自`QWidget`的新类,并在其内部初始化并管理一个或多个OSG视窗实例。这样做不仅允许直接控制OpenGL上下文,同时也简化了事件处理机制的设计——这些都是实现流畅用户体验的关键因素之一。此外,还需特别关注根目录变量(如`ROOT=D:\SWEnvironment\OSG`),因为它决定了外部资源文件的位置关系,必须准确无误地指向本地安装路径下的相应位置[^4]。 ```cpp // mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <osgViewer/CompositeViewer> class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); private slots: void initializeGL(); }; #endif // MAINWINDOW_H // main.cpp #include "mainwindow.h" int main(int argc, char **argv) { QApplication app(argc, argv); osg::ref_ptr<osgViewer::CompositeViewer> viewer(new osgViewer::CompositeViewer()); MainWindow window; window.show(); QTimer timer; QObject::connect(&timer, SIGNAL(timeout()), &app, SLOT(quit())); timer.start(1000); // 设置定时退出时间 return app.exec(); } ``` 上述代码片段展示了如何在一个简单的Qt窗口中嵌入OSG查看器对象。通过这种方式,可以在保持原有GUI布局的同时享受来自OSG的强大三维渲染能力[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值