Skip to content

Commit

Permalink
Update build.md with Linux and WSL2 tips
Browse files Browse the repository at this point in the history
  • Loading branch information
plevy committed Jan 24, 2024
1 parent db8694e commit 2925142
Showing 1 changed file with 94 additions and 0 deletions.
94 changes: 94 additions & 0 deletions docs/source/build.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,100 @@ set OSG_GL_CONTEXT_PROFILE_MASK=1

The context version and profile mask are also settable via the `osg::DisplaySettings` class in the OpenSceneGraph API.

## Linux Build Example
vcpkg is one option for building osgEarth and all the dependencies, but it is also possible to use the Linux binary repositories to install dependencies quickly. This is based on Ubuntu but the idea is the same, install the required dependencies and compile osgEarth. Here are the basics:

Install Build essentials
```
sudo apt update && sudo apt install build-essential
```
Install GDAL:
```
sudo apt-get install libgdal-dev
```
Install GLEW
```
sudo apt-get install libglew-dev
```
Build Openscenegraph. This sets GL profile and context which aren't necessary so change accordingly for your needs.
```
git clone https://github.com/openscenegraph/OpenSceneGraph.git
cd osg
mkdir build && cd build
cmake .. -DOPENGL_PROFILE=GL3 -DOSG_GL_CONTEXT_VERSION=4.6
make -j8
sudo make install
```
Build Draco. This is optional but included in case it is not available in a repo. The -fPIC flag may be required on some platforms but not others.
```
git clone https://github.com/google/draco.git
cd draco
mkdir build && cd build
cmake .. -DCMAKE_CXX_FLAGS=-fPIC
make -j8
sudo make install
```
Build osgEarth. Turning off OSGEARTH_ENABLE_FASTDXT may not be necessary but left it here for platforms where it will not build
```
git clone https://github.com/gwaldron/osgearth.git
cd osgEarth
mkdir build && cd build
cmake .. -DOSGEARTH_ENABLE_FASTDXT=OFF
make -j8
sudo make install
```
After a successful build, it might be necessary to set your dynamic library search path to find both OpenScenegraph and osgEarth libraries. Check path to osgPlugins folders also.
```
export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
```
## Tips for Running on Windows WSL2 with nVidia GPU
In WSL2 (I have tried Ubuntu 20 and 22), follow the previous Linux build example with this change to Openscenegraph:
Build Openscenegraph. This sets GL profile to Core and context to 3.3 for Mesa compatibility
```
git clone https://github.com/openscenegraph/OpenSceneGraph.git
cd osg
mkdir build && cd build
cmake .. -DOPENGL_PROFILE=GL3 -DOSG_GL_CONTEXT_VERSION=3.3
make -j8
sudo make install
```
At that point, you should have all the osgEarth binaries built and installed.
Next follow this guide: [https://canonical-ubuntu-wsl.readthedocs-hosted.com/en/latest/tutorials/gpu-cuda/](https://canonical-ubuntu-wsl.readthedocs-hosted.com/en/latest/tutorials/gpu-cuda/#install-nvidia-cuda-on-ubuntu)

Shortcut steps but see the above link for more information.
```
sudo apt-key del 7fa2af80
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/3bf863cc.pub
sudo add-apt-repository 'deb https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/ /'
sudo apt-get update
sudo apt-get -y install cuda
```
I did clone the CUDA samples repo and build deviceQuery which will be a quick test to make sure your GPU is recognized
```
git clone https://github.com/nvidia/cuda-samples
cd cuda-samples/Samples/1_Utilities/deviceQuery
make
./deviceQuery
```
If that successfully recognizes your nVidia GPU, you can try:
```
osgearth_version --caps
[osgEarth] Hello, world.
[osgEarth] [Registry] Note: GDAL_DATA environment variable is not set
[osgEarth] [Capabilities] osgEarth Version: 3.5.0 build 149
[osgEarth] [Capabilities] GDAL Version: 3.4.1
[osgEarth] [Capabilities] OSG Version: 3.7.0
[osgEarth] [Capabilities] OSG GL3 Features: yes
[osgEarth] [Capabilities] OSG FFP Available: no
[osgEarth] [Capabilities] CPU Cores: 16
[osgEarth] [Capabilities] GL_VENDOR: Microsoft Corporation
[osgEarth] [Capabilities] GL_RENDERER: D3D12 (NVIDIA GeForce RTX 3070 Ti)
[osgEarth] [Capabilities] GL_VERSION: 4.2 (Core Profile) Mesa 23.0.4-0ubuntu1~22.04.1
[osgEarth] [Capabilities] GL CORE Profile: yes
```
## Tips for VMware Users

Running osgEarth in a virtual machine environment can be tricky since they usually don't have direct access to the graphics hardware by default. If you are having trouble you can try these tips.
Expand Down

0 comments on commit 2925142

Please sign in to comment.