OpenSceneGraph git repository
Switch branches/tags
OpenSceneGraph-3.6.3 OpenSceneGraph-3.6.3-rc3 OpenSceneGraph-3.6.3-rc2 OpenSceneGraph-3.6.3-rc1 OpenSceneGraph-3.6.2 OpenSceneGraph-3.6.1 OpenSceneGraph-3.6.0 OpenSceneGraph-3.5.10 OpenSceneGraph-3.5.9 OpenSceneGraph-3.5.8 OpenSceneGraph-3.5.7 OpenSceneGraph-3.5.6 OpenSceneGraph-3.5.5 OpenSceneGraph-3.5.4 OpenSceneGraph-3.5.3 OpenSceneGraph-3.5.2 OpenSceneGraph-3.5.1 OpenSceneGraph-3.5.0 OpenSceneGraph-3.4.1 OpenSceneGraph-3.4.0 OpenSceneGraph-3.3.9 OpenSceneGraph-3.3.8 OpenSceneGraph-3.3.7 OpenSceneGraph-3.3.6 OpenSceneGraph-3.3.5 OpenSceneGraph-3.3.4 OpenSceneGraph-3.3.3 OpenSceneGraph-3.3.2 OpenSceneGraph-3.3.1 OpenSceneGraph-3.3.0 OpenSceneGraph-3.2.3 OpenSceneGraph-3.2.2 OpenSceneGraph-3.2.1 OpenSceneGraph-3.2.0 OpenSceneGraph-3.1.10 OpenSceneGraph-3.1.9 OpenSceneGraph-3.1.8 OpenSceneGraph-3.1.7 OpenSceneGraph-3.1.6 OpenSceneGraph-3.1.5 OpenSceneGraph-3.1.4 OpenSceneGraph-3.1.2 OpenSceneGraph-3.1.1 OpenSceneGraph-3.1.0 OpenSceneGraph-3.0.1 OpenSceneGraph-3.0.0 OpenSceneGraph-2.9.16 OpenSceneGraph-2.9.15 OpenSceneGraph-2.9.14 OpenSceneGraph-2.9.13 OpenSceneGraph-2.9.12 OpenSceneGraph-2.9.11 OpenSceneGraph-2.9.10 OpenSceneGraph-2.9.9 OpenSceneGraph-2.9.8 OpenSceneGraph-2.9.7 OpenSceneGraph-2.9.6 OpenSceneGraph-2.9.5 OpenSceneGraph-2.9.4 OpenSceneGraph-2.9.3 OpenSceneGraph-2.9.2 OpenSceneGraph-2.9.1 OpenSceneGraph-2.9.0 OpenSceneGraph-2.8.5 OpenSceneGraph-2.8.4 OpenSceneGraph-2.8.3 OpenSceneGraph-2.8.2 OpenSceneGraph-2.8.2b OpenSceneGraph-2.8.1 OpenSceneGraph-2.8.0 OpenSceneGraph-2.7.9 OpenSceneGraph-2.7.8 OpenSceneGraph-2.7.7 OpenSceneGraph-2.7.6 OpenSceneGraph-2.7.5 OpenSceneGraph-2.7.4 OpenSceneGraph-2.7.3 OpenSceneGraph-2.7.2 OpenSceneGraph-2.7.1 OpenSceneGraph-2.7.0 OpenSceneGraph-2.6.1 OpenSceneGraph-2.6.0 OpenSceneGraph-2.5.5 OpenSceneGraph-2.5.4 OpenSceneGraph-2.5.3 OpenSceneGraph-2.5.2 OpenSceneGraph-2.5.1 OpenSceneGraph-2.5.0 OpenSceneGraph-2.4.0 OpenSceneGraph-2.3.11 OpenSceneGraph-2.3.10 OpenSceneGraph-2.3.9 OpenSceneGraph-2.3.8 OpenSceneGraph-2.3.7 OpenSceneGraph-2.3.6 OpenSceneGraph-2.3.5 OpenSceneGraph-2.3.4 OpenSceneGraph-2.3.3 OpenSceneGraph-2.3.2 OpenSceneGraph-2.3.1
Nothing to show
Clone or download
robertosfield Added check under Windows for a concatinated path that exceeds the MA…
…X_PATH so that it isn't used for file IO operations that could lead to undefined behavior

#634
Latest commit bea8cd6 Oct 17, 2018
Permalink
Failed to load latest commit information.
CMakeModules fix build of gta plugin when pkg-config is used Oct 9, 2018
PlatformSpecifics From Adrian Clark, build fix for recent Android NDK using the old And… Dec 18, 2014
applications fix examples context creation for X11 Sep 8, 2018
debian_scripts Improved cpack configuration for building debian packages: Mar 20, 2017
doc/Doxyfiles remove include/osgQt from doxyfiles; add osgPresentation and osgUI Jun 14, 2018
examples fix builds with case sensitive includes Oct 9, 2018
include From Andy Skinner, Added ~GLExtensions to clear cached values for con… Oct 2, 2018
packaging Removed Qt dependency examples, osgQt NodeKit and qfont plugin as the… Sep 26, 2016
src Added check under Windows for a concatinated path that exceeds the MA… Oct 17, 2018
.codedocs Reduced public documentation generation to just the public headers Nov 15, 2016
.gitignore Added handling of CPACK and automatically generated package files Aug 21, 2017
.travis.yml Disabled OSX builds as they are consistently failing on travis due to… Jan 5, 2018
AUTHORS.txt Pulled in latest changes from 3.6 branch Apr 7, 2018
CMakeLists.txt Improved iOS cmake support for xcode 9.4 and cmake 3.11 Jul 10, 2018
CTestConfig.cmake From Jean-Sebastien Guay, updated CTestConfig to point to new cdash.o… Jul 24, 2009
ChangeLog Updated ChangeLog and README.md Apr 26, 2018
LICENSE.txt Updated LICENSE to use the WxWidgets-3.1 and updates to the LGPL-2.1-… Jun 3, 2018
NEWS.txt Fixed typo Apr 7, 2018
README.md removed ios simulator reference, adjusted readme Jul 23, 2018
runexamples.bat Removed old examples that relied upon deprecated functionality Jun 17, 2016

README.md

Build Status Coverity Status Documentation ABI Tracker

Introduction

Welcome to the OpenSceneGraph (OSG).

For up-to-date information on the project, in-depth details on how to compile and run libraries and examples, see the documentation on the OpenSceneGraph website:

http://www.openscenegraph.org/index.php/documentation

For support subscribe to our public mailing list or forum, details at:

http://www.openscenegraph.org/index.php/support

For the impatient, we've included quick build instructions below, these are are broken down is three parts:

  1. General notes on building the OpenSceneGraph
  2. macOS release notes
  3. iOS release notes

If details below are not sufficient then head over to the openscenegraph.org to the Documentation/GettingStarted and Documentation/PlatformSpecifics sections for more indepth instructions.

Robert Osfield. Project Lead. 26th April 2018.


Section 1. How to build OpenSceneGraph

The OpenSceneGraph uses the CMake build system to generate a platform-specific build environment. CMake reads the CMakeLists.txt files that you'll find throughout the OpenSceneGraph directories, checks for installed dependencies and then generates files for the selected build system.

If you don't already have CMake installed on your system you can grab it from http://www.cmake.org, use version 2.8.0 or later. Details on the OpenSceneGraph's CMake build can be found at:

http://www.openscenegraph.org/projects/osg/wiki/Build/CMake

Under Unix-like systems (i.e. Linux, IRIX, Solaris, Free-BSD, HP-UX, AIX, macOS) use the cmake or ccmake command-line utils. Note that cmake . defaults to building Release to ensure that you get the best performance from your final libraries/applications.

cd OpenSceneGraph
cmake .
make
sudo make install

Alternatively, you can create an out-of-source build directory and run cmake or ccmake from there. The advantage to this approach is that the temporary files created by CMake won't clutter the OpenSceneGraph source directory, and also makes it possible to have multiple independent build targets by creating multiple build directories. In a directory alongside the OpenSceneGraph use:

mkdir build
cd build
cmake ../OpenSceneGraph
make
sudo make install

Under Windows use the GUI tool CMakeSetup to build your VisualStudio files. The following page on our wiki dedicated to the CMake build system should help guide you through the process:

http://www.openscenegraph.org/index.php/documentation/platform-specifics/windows

Under macOS you can either use the CMake build system above, or use the Xcode projects that you will find in the OpenSceneGraph/Xcode directory. See release notes on macOS CMake build below.

For further details on compilation, installation and platform-specific information read "Getting Started" guide:

http://www.openscenegraph.org/index.php/documentation/10-getting-started

Section 2. Release notes on macOS build, by Eric Sokolowski et al.

There are two ways to compile OpenSceneGraph under macOS. The recommended way is to use CMake to generate Xcode project files and then use Xcode to build the library. The default project will be able to build Debug or Release libraries, examples, and sample applications.

The alternative is to build OpenSceneGraph from the command line using make or ninja using the instructions for Unix-like systems above.

Here are some key settings to consider when using CMake:

  • BUILD_OSG_EXAMPLES - By default this is turned off. Turn this setting on to compile many great example programs.
  • CMAKE_OSX_ARCHITECTURES - Xcode can create applications, executables, libraries, and frameworks that can be run on more than one architecture. Use this setting to indicate the architectures on which to build OSG. x86_64 is the only supported value for OS versions > 10.7.
  • OSG_BUILD_APPLICATION_BUNDLES - Normally only executable binaries are created for the examples and sample applications. Turn this option on if you want to create real macOS .app bundles. There are caveats to creating .app bundles, see below.
  • OSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX - By default macOS uses the imageio plugin instead of the plugins for the individual file types (e.g. jpg, gif, etc.) to load image file types. The imageio plugin can handle all popular file formats through the ImageIO framework.
  • OSG_WINDOWING_SYSTEM - You have the choice to use Cocoa, Carbon, or X11 when building applications on macOS. Cocoa is the default for OS versions >= 10.5. Carbon and X11 are no longer actively supported, either by Apple or the OSG community.

APPLICATION BUNDLES (.app bundles)

The example programs when built as application bundles only contain the executable file. They do not contain the dependent libraries as would a normal bundle, so they are not generally portable to other machines. They also do not know where to find plugins. An environmental variable OSG_LIBRARY_PATH may be set to point to the location where the plugin .so files are located. OSG_FILE_PATH may be set to point to the location where data files are located. Setting OSG_FILE_PATH to the OpenSceneGraph-Data directory is very useful when testing OSG by running the example programs.

Many of the example programs use command-line arguments. When double-clicking on an application (or using the equivalent "open" command on the command line) only those examples and applications that do not require command-line arguments will successfully run. The executable file within the .app bundle can be run from the command-line if command-line arguments are needed.

Section 3. Release notes on iOS build, by Thomas Hogarth

With CMake 3.11, XCode 9.4 and the iOS sdk 11.4 installed you can generate an iOS XCode project using the following command line:

export THIRDPARTY_PATH=/path/to/3rdParty
cmake ./ -G Xcode -DOSG_BUILD_PLATFORM_IPHONE:BOOL=ON \
-DIPHONE_SDKVER="11.4" \
-DIPHONE_VERSION_MIN="10.0" \
-DOPENGL_PROFILE:STRING=GLES3 \
-DOSG_CPP_EXCEPTIONS_AVAILABLE:BOOL=ON \
-DBUILD_OSG_APPLICATIONS:BOOL=OFF \
-DBUILD_OSG_EXAMPLES:BOOL=ON \
-DOSG_WINDOWING_SYSTEM:STRING=IOS \
-DOSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX="imageio" \
-DDYNAMIC_OPENSCENEGRAPH:BOOL=OFF \
-DDYNAMIC_OPENTHREADS:BOOL=OFF \
-DCURL_INCLUDE_DIR:PATH="$THIRDPARTY_PATH/curl-ios-device/include" \
-DCURL_LIBRARY:PATH="$THIRDPARTY_PATH/curl-ios-device/lib/libcurl.a" \
-DFREETYPE_INCLUDE_DIR_freetype2:PATH="$THIRDPARTY_PATH/freetype-ios-universal/include/freetype" \
-DFREETYPE_INCLUDE_DIR_ft2build:PATH="$THIRDPARTY_PATH/freetype-ios-universal/include" \
-DFREETYPE_LIBRARY:PATH="$THIRDPARTY_PATH/freetype-ios-universal/lib/libFreetype2.a" \
-DTIFF_INCLUDE_DIR:PATH="$THIRDPARTY_PATH/tiff-ios-device/include" \
-DTIFF_LIBRARY:PATH="$THIRDPARTY_PATH/tiff-ios-device/lib/libtiff.a" \
-DGDAL_INCLUDE_DIR:PATH="$THIRDPARTY_PATH/gdal-ios-device/include" \
-DGDAL_LIBRARY:PATH="$THIRDPARTY_PATH/gdal-ios-device/lib/libgdal.a"

Be sure to set the THIRDPARTY_PATH to the path containing your thirdparty dependencies. Set IPHONE_SDKVER to the version of the iOS sdk you have installed, in this instance 11.4. IPHONE_VERSION_MIN controls the deployment sdk used by xcode, and lastly set OPENGL_PROFILE to the version of GLES you want to use.

Once this completes an XCode project will have been generated in the osg root folder. Open the generated Xcode project, select the example_osgViewerIPhone target. In 'General' tab set a development team.

Once this is done you should be able to build and deploy the example_osgViewerIPhone target on your device.