mit einem Klick
mit einem Klick
| name | compiler |
| description | 测试osgVerse在各个常见系统平台的编译情况 |
| homepage | https://gitee.com/xarray/osgverse |
| metadata | {"nanobot":{"emoji":"🌤️","requires":{"bins":["cmake","git"]}}} |
任何情况下,都请在Windows系统的E:\BotWorkspace或者Unix系统的~/BotWorkspace下工作,如果这个目录不存在,你可以建立它。但是请不要在这个目录之外删除、修改或者创建任何文件与目录。如果这个目录不存在又无法被建立,则直接停止你后续的工作并汇报即可。
osgVerse的代码仓库地址为:https://gitee.com/xarray/osgverse 或者 https://github.com/xarray/osgverse 正常情况下,签出代码请执行
git clone https://gitee.com/xarray/osgverse.git
每次重新编译代码之前,请先尝试更新仓库代码,以获取最新的版本
cd osgverse
git pull
目前,osgVerse可以编译并运行在Windows,Linux,MacOSX,Android平台上,或者通过Emscripten编译为WebAssembly代码(即WASM,在浏览器端支持WebGL1和WebGL2),并且可以使用OpenGL Compatible,OpenGL Core,OpenGL ES或者Vulkan作为底层图形接口平台。如果要编译到MacOSX平台,或者使用Vulkan作为底层接口,则需要预先准备Google Angle库作为必要依赖库。
编译的中间文件和结果文件目录自动设置为osgVerse根目录下的build目录。如有必要,可以直接删除该目录中对应的编译结果子目录以重置编译流程。
如果要在GLES2和GLES3之间切换,或者在WEBGL1和WEBGL2之间切换,则必须重置编译流程。
osgVerse提供了自动化的Setup编译脚本,建议可以使用脚本来完成具体的编译流程 具体图形接口的支持情况和生成结果如下:
build/3rdparty,build/osg_def,build/verse_def,编译结果位于build/sdkbuild/3rdparty,build/osg_core,build/verse_core,编译结果位于build/sdk_corebuild/3rdparty,build/osg_es,build/verse_es,编译结果位于build/sdk_esbuild/3rdparty,build/osg_es,build/verse_es,编译结果位于build/sdk_esbuild/3rdparty_wasm,build/osg_wasm,build/verse_wasm,编译结果位于build/verse_wasmbuild/3rdparty_wasm,build/osg_wasm2,build/verse_wasm2,编译结果位于build/verse_wasm2java,gradle程序,并设置环境变量ANDROID_SDK和ANDROID_NDK来定义Android依赖库的位置;中间文件包括build/3rdparty_android,build/osg_android,build/verse_androidosgVerse默认可以从系统目录(例如/usr/include,/usr/lib等)检索可能的依赖库位置,也可以从与osgVerse根目录同级的Dependencies目录检索用户提供的依赖库。根据用户操作系统和架构的不同,具体依赖库所在的子目录名称也各不相同。主要包括:
Dependencies/x86: Windows/Linux桌面系统,32位Dependencies/x64: Windows/Linux桌面系统,64位Dependencies/uwp: Windows UWP系统Dependencies/aarch64: ARM Linux系统,64位Dependencies/apple: Mac OSX系统Dependencies/wasm: 为WebAssembly平台编译,32位Dependencies/wasm64: 为WebAssembly平台编译,64位Dependencies/android: 为Android平台编译Dependencies/ios: 为IOS平台编译
对于Windows系统,还可能根据Visual Studio的版本不同,设置第三级子目录,例如Dependencies/x64/msvc16(VS2019),Dependencies/x64/msvc17(VS2022)。最后一级子目录中会至少包含include和lib两个子文件夹,用于定位依赖库的头文件路径和库文件路径。osgVerse可以使用的依赖库如下列表所示,除了OpenSceneGraph,其它所有的依赖库都不是必需的。在编译过程中,如果可以快速地从仓库获取到依赖库,则尝试先安装依赖库;否则默认略过即可。
apt-get install libbullet-devapt-get install libavcodec-dev libavformat-dev libavutil-dev libavdevice-dev libswscale-devapt-get install libdraco-devapt-get install libosmium2-devapt-get install libwebp-devapt-get install libmimalloc-devapt-get install libnetcdf-devapt-get install unixodbc-devapt-get install libopenvdb-dev libboost-devapt-get install libpython3.10-devapt-get install libsdl2-dev默认系统中已有cmake,git这些指令,不需要再单独搜索它们的路径。然后通过Visual Studio的Command Prompt进入终端界面。
进入脚本模式,为了避免在编译过程中等待用户输入,需要带一个CMD参数。这里的可以是: DEFAULT,CORE,GLES2,GLES3,WEBGL1,WEBGL2,ANDROID,对应之前所述的具体图形接口。
Setup.bat <CMD>
脚本模式可以带第2个参数,例如
Setup.bat <CMD> <path_to_gles_libs>
# 此处假定path_to_gles_libs是libGLESv2.lib和libEGL.lib库所在目录
脚本会自动下载OpenSceneGraph的代码仓库并放置于osgVerse根目录的同级目录。脚本执行时会自动覆写OpenSceneGraph目录下的部分文件,例如CMakeLists.txt,正常情况下该文件的内容应当超过1000行。 每次启动脚本时,需要检查该文件,如果它的行数过短,有可能已经损坏,此时需要直接删除OpenSceneGraph目录,并再次运行Setup脚本,以重新下载。
Linux模式下,脚本文件名改为Setup.sh,除此之外一切的参数和注意事项均不变。
进入编译的结果目录,例如build/sdk,检查其中是否有bin,include,lib子目录,且是否存在lib/cmake/osgVerse/osgVerseConfig.cmake文件。如果存在,则编译已经成功得到结果。
CORE模式请检查build/sdk_core目录,GLES2或者GLES3模式请检查build/sdk_es目录,以此类推。
进入bin目录,运行下面的指令来测试基础的PBR流水线运行结果
./osgVerse_Viewer
通过鼠标左键拖动,缓缓旋转模型,观察其阴影、光照效果以及背景天空盒是否均存在,且渲染结果是否流畅自然。 按F键将场景窗口化,观察是否出现渲染问题;再次按F键将场景最大化,观察是否出现渲染问题。 如果结果正常,则按ESC退出;否则请说明情况。