OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细

OSG-OpenSceneGraph环境部署(OSG3.6.5+VS2022+Win10_x64)

1.安装与配置

都下最新的就行

E盘下建立OSG文件夹,分别建立如下三个文件夹(文件夹名称随自己,能分清即可)

OpenSceneGraph_3.6.5:存放解压后的OpenSceneGraph-3.6.5文件

3rdParty_x64:用于存放解压后的3rdParty_VS2017_v141_x64_V11_full文件

Data:用于存放解压后的OpenSceneGraph-Data-3.4.0.zip

bulid:用于存放编译后的文件

(1)OSG源码下载

OpenSceneSraph官网:

Stable releases

下载OpenSceneGraph-3.6.5.zip

(2)编译工具下载(CMake)

编译工具选择CMake

官网下载

Download | CMake

下载 cmake-3.24.1-windows-x86_64.msi

(3)第三方库下载

下载自己需要的即可,最好与编译器版本一致

但没有VS2022对应的,只好下载最新的2017版

Dependencies

下载3rdParty_VS2017_v141_x64_V11_full.7z

(4)数据包下载

Data Resources

下载OpenSceneGraph-Data-3.4.0.zip

2.CMake构建

(1)安装CMake默认安装即可(也可以改位置)

(2)构建

构建时建议配合阅读 “5.测试是否安装配置成功中的错误解决 1)2)",否则待会要编译两次ALL_BUILD,非常痛苦

(题外话,所以看的教程比较短的话最好先阅读一遍,大体了解一下,再进行操作,不要太着急,我来来回回配置了五个多小时,可以说是非常痛苦~)

打开CMake,配置源文件目录和编译的生成目录,如下图:OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第1张图片

点击“Configure”按钮进入如下界面,如图所示进行配置OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第2张图片

点击“Finish”,开始配置(如图)OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第3张图片

 修改ACTUAL_3RDPARIT_DIR的值为E:/OSG/3rdparty

BUILD_OSG_EXAMPLES打勾

CMAKE_INSTALL_PREFIX的值设置为build文件夹路径OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第4张图片

再次点击“Configure”按钮

还有红色选项,BULID_MFC_EXAMPLE打勾(VS一定要安装MFC开发组件)OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第5张图片

再次点击“Configure”按钮

没有红色选项了

然后点击“Generate”按钮进行生成

3.编译

注意:编译前一定要安装MFC组件

(1)ALL_BUILD编译

在build目录中,找到生成的OpenSceneGraph.sln文件,然后用VS2022打开:OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第6张图片

选择生成-->批生成,在弹出窗口选择ALL BUILD 的 Debug和Release:OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第7张图片

点击“生成”

这一步应该会花费较久的时间(15:11~17:00)

如果前面配置无误,此时不会报错

注意:

1、ALL BUILD之前必须安装安装MFC组件

直接去VS2022Community下载,修改-->使用C++的桌面开发-->勾选MFC组件-->修改

2、注意版本,例如afxwin.h类文件中出现很多错误,不要慌!经过观察,出问题的文件基本是afxwin.h,在Examples osgviewerMFC工程中,这个是库文件,一般不会有错误。一般来说,这种问题是MFC编译平台的问题。可以看到改工程的目标编译平台为OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第8张图片

其中的_WIN32_WINNT=0x0A00,表明目标平台是Win10的,对应关系如下所示:OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第9张图片

 参考:使用Windows标头 - Win32 apps | Microsoft Docs

但该工程的定义是0x0501

此定义在该工程下的stdafx.h头文件下

改成如下:

 OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第10张图片

#define WINVER 0x0501  //代表面向XP系统,需要修改,我们是win10系统
#define WINVER 0x0A00  //代表面向Win10系统

改好后保存,再重新ALL_BUILD一下,应该就没有错误了(别担心,这次很快)

(2)INSTALL编译

ALL_BUILD编译完成后,需要进行INSTALL编译

打开生成-->批生成,选择INSTALL的Debug和Rslease,点击“生成”OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第11张图片

 这个很快

4.配置环境变量

右键计算机-->属性-->高级系统设置-->高级-->环境变量

添加系统环境变量OSG_FILE_PATH,值为前面的Data的目录(E:\OSG\Data)OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第12张图片

然后在Path变量中添加前面生成目录build目录中的bin目录(E:\OSG\build\bin)OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第13张图片

 配置完最好重启一下电脑

5.测试是否安装配置成功

(1)命令行测试

Win+R打开命令行窗口

  • 命令行输入osgversion查看版本号,如图

  • 命令行输入:osglogoOSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第14张图片

可以看出,有些问题

可以进行拖动,缩放,旋转等操作,但图形渲染有问题,并且logo右边彩色框里的地球没有显示。

命令行打印的错误信息如下:

不要急,让我们一步一步来解决。

错误解决

1)解决Error reading file E:\OSG\Data\fonts\arial.ttf: file not handled

打开CMake

勾选上边的 AdvancedOSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第15张图片

取消勾选OSG_TEXT_USE_FONTCONFIG,如下图:OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第16张图片

配置freetype路径:在我们的E:/OSG/3drParty_x64/x64/ 中

FREETYPE_INCLUDE_DIR_freetype2------include

FREETYPE_INCLUDE_DIR_ft2build------include

FREETYPE_LIBRARY_DEBUG-----------/lib/freetypr271d.lib

FREETYPE_LIBRARY_RELEASE-----------/lib/freetypr271.libOSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第17张图片

Configure-->Generate,然后重新打开 .sln解决方案,生成-->批生成,和上边一样,先ALL_BUILD(还是挺慢的,太痛苦了)再INSTALL.然后在命令行再次运行osglogo

如下图所示:文字显示正常了。OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第18张图片

解决了,但没有完全解决,还少一个左边框框里的自转的地球,下面解决无法读取jpg文件

2)解决无法读取jpg图片,Error reading file Images/land_shallow_topo_2048.jpg: read error (Could not find plugin to read objects from file "Images/land_shallow_topo_2048.jpg".)

应该是缺少了读取.jpg文件的库

再次CMake配置一下,所以说我为什么没有在第一次配好(大哭)OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第19张图片

修改JPEG路径 E:/OSG/3rdParty_x64/x64

JPEG_INCLUDE_DIR---------include

JPEG_LIBRARY_DEBUG-------------lib/jpegd.lib

JPEG_LIBRARY_RELEASE----------lib/jpeg.libOSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第20张图片

Configure-->Generate,然后再打开 .sln 解决方案,生成-->批生成,先ALL_BULID,然后再INSTALL,再重新运行

命令行输入osglogo

OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第21张图片

ohhhhhhhhhhhhhhhhh成功了!!!放鞭炮放鞭炮~

接下来是在VS2022创建项目进行测试

6.VS2022新建项目测试

(1)新建与配置

1)C++附加库目录

在VS2022中新建C++空项目,记得要先加上mian.cpp属性里才有C/C++

右键项目名-->属性-->C/C++-->常规-->附加包含目录-->bulid目录下的include目录(对我来说是E:\OSG\build\include),如图:OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第22张图片

2)链接库配置

配置链接库目录:

右键项目名-->属性-->链接器-->常规-->附加目录-->bulid下的lib目录(对我来说是E:\OSG\build\lib)OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第23张图片

右键项目名-->属性-->链接器-->输入-->附加依赖项,添加如下:

OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgUtild.lib
osgGAd.lib
osgViewerd.lib
osgTextd.lib

注意:在编译生成的lib文件中,每个lib文件有一对名称相似的文件,其中文件名最后一个字母为“d”的为Debug版本所使用的,没有“d”的为Release版本所使用的。OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第24张图片

3)定义预处理器

右键项目名-->属性-->C/C++-->预处理器-->预处理器定义,添加WIN32OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第25张图片

以上也可以在程序所有头文件最上边加上

#include 

(2)代码

#include 
#include 
​
int main() {
    osgViewer::Viewer viewer;
    viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
    return viewer.run();
}

成功!!!

OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细_第26张图片

参考文章:

CSDN【OSG】OSG环境部署 OSG3.6.5+vs2017+win10_x64(超详细)

你可能感兴趣的:(OSG,mfc,linux,windows)