OSG+QT5+vs2010编译

这篇博客详细记录了如何在Windows 7 64位系统,使用Visual Studio 2010和QT 5.3.1编译OpenSceneGraph (OSG) 3.2.1的过程,包括下载源码、配置CMake和编译osg-3rdparty与OSG的步骤。

OSG+QT5+vs2010编译

作者:JTR@BNU

 本文属于原创,转载请注明出处。

由于网上没有找到关于编译QT5环境下的OSG,自己就研究了下,记录下整个过程,希望能帮到大家。

1. 准备工作

下载源代码:

A、openscenegraph 3.2.1(当前最新的realease版本)

http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.2.1.zip

 

B、osg-3rdparty

https://github.com/bjornblissing/osg-3rdparty-cmake

 

C、Cmake  3.2.2(当前最新)

http://www.cmake.org/files/v3.2/cmake-3.2.2-win32-x86.exe

 

环境介绍:

OS:windo

<think>嗯,用户想了解如何在Visual Studio中使用osgosgQt。首先,我需要回忆之前提供的引用内容,引用[1]和[2]提到了在Qt中集成osg的方法,比如使用MSVC编译器和Qt的窗口嵌入。不过用户现在问的是Visual Studio,所以可能需要调整步骤。 首先,安装OSGosgQt应该是前提。用户可能需要通过vcpkg或者自己编译来获取库文件。然后,配置Visual Studio的项目属性,包括包含目录、库目录和链接库。记得要设置环境变量PATH,确保运行时能找到DLL。 接下来是创建Qt窗口并嵌入osg的Viewer。引用[2]中的代码示例可能有用,但需要调整到Visual Studio的环境里。可能需要将Qtosg的头文件正确包含,并处理事件循环的问题,确保osgQt的事件都能被处理。 还有,用户可能会遇到链接错误或者运行时找不到DLL的问题,这时候需要检查库路径是否正确。另外,调试和发布版本的配置差异也要注意,避免混用导致问题。 最后,测试代码部分需要确保模型路径正确,比如cow.osg是否存在。如果用户遇到问题,可能需要指导他们如何排查路径错误或者依赖项缺失。可能还需要提到使用Qt的.pro文件或者CMake来管理项目,但用户用的是VS,所以重点在属性配置。</think>### 在 Visual Studio 中使用 osgosgQt 的步骤指南 #### 一、环境准备 1. **安装 OpenSceneGraph (osg)** - 推荐使用 vcpkg 安装:`vcpkg install openscenegraph:x64-windows` - 或从官网下载预编译包,配置环境变量 `OSG_ROOT` 指向安装目录[^1] 2. **安装 osgQt 支持库** - 通过 vcpkg 安装:`vcpkg install openscenegraph-osgQt:x64-windows` - 确保 `osgQt.lib` 和头文件路径正确 3. **配置 Visual Studio** - 新建空项目,选择 **x64 调试/发布** 配置(必须与 osg编译架构一致) #### 二、项目属性配置(以 VS2022 为例) 1. **包含目录**: ``` $(OSG_ROOT)\include $(OSG_ROOT)\include\osgQt $(Qt_INCLUDE_DIR) ``` 2. **库目录**: ``` $(OSG_ROOT)\lib $(OSG_ROOT)\bin $(Qt_LIB_DIR) ``` 3. **附加依赖项**: ```plaintext osgQt.lib OpenThreadsd.lib osgd.lib osgDBd.lib osgGAd.lib Qt5Core.lib Qt5Widgets.lib ``` 4. **环境变量**: - 将 `$(OSG_ROOT)\bin` 添加到系统 PATH 变量[^1] #### 三、代码示例(Qt 窗口嵌入 osg) ```cpp #include <QtWidgets/QApplication> #include <osgQt/GraphicsWindowQt> #include <osgViewer/Viewer> class OSGWidget : public QWidget { public: OSGWidget(QWidget* parent = nullptr) : QWidget(parent) { osg::ref_ptr<osgQt::GraphicsWindowQt> gw = new osgQt::GraphicsWindowQt(this->geometry()); osgViewer::Viewer* viewer = new osgViewer::Viewer; viewer->setCameraManipulator(new osgGA::TrackballManipulator); viewer->setSceneData(osgDB::readNodeFile("cow.osg")); viewer->setCamera(gw->getCamera()); QVBoxLayout* layout = new QVBoxLayout; layout->addWidget(gw->getGLWidget()); setLayout(layout); } }; int main(int argc, char** argv) { QApplication app(argc, argv); OSGWidget widget; widget.show(); return app.exec(); } ``` #### 四、关键问题排查 1. **QApplication 事件循环冲突**: - 必须使用 `QApplication` 而非 `QCoreApplication`,否则会导致 OpenGL 上下文初始化失败[^2] 2. **GL 版本兼容**: ```cpp // 在 main 函数开头添加 osg::DisplaySettings::instance()->setGLContextVersion("3.3"); ``` 3. **调试模式配置**: - Debug 配置需使用带 `d` 后缀的库(如 `osgQtd.lib`) - Release 配置使用无后缀版本(如 `osgQt.lib`)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值