You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.6KB

Title: OpenSceneGraph sample Date: 2017-05-12 00:00 Category: News Slug: osg-sample Lang: en

Rocket in the distance

This article describes creation of the tutorials for building sample OpenSceneGraph application under Linux, macOS, Windows, and Android in April 2017.

Previous tutorials described how to install OpenSceneGraph under Linux, macOS, Windows and render a model using the standard osgviewer tool. This time we worked on a sample OpenSceneGraph application that would run under Linux, macOS, Windows, and Android.

The application is very basic and has the following features:

  1. Render window creation
  2. Model loading
  3. Model rendering with simple GLSL shaders
  4. Model motion with a mouse under Linux, macOS, Windows and a finger under Android

Creating the tutorials for Linux, macOS, Windows was so easy and straightforward, that it only took us half a month. We spent the second half of the month creating Android tutorial.

Our first successful Android build last year included hacks and non-obvious steps to make OpenSceneGraph run under Android. This time we wanted a cleaner, faster, and cheaper approach.

The approach we ended up with requires just a few files and a few changes to the original Android Studio project (with C++ support) to make sample OpenSceneGraph application run under Android.

Here's a quick rundown of the files:

  1. GLES2 surface
  2. Render activity to render to the surface
  3. Native library Java interface
  4. Native library C++ implementation
  5. CMake file to build native library
  6. Render activity layout
  7. Model to display

Here's a quick rundown of the project changes:

  1. Update Android manifest to use GLES2 and render activity
  2. Reference native library's CMake file in the project's CMake file

OpenSceneGraph documentation suggests building OpenSceneGraph outside Android Studio with CMake. However, this approach has the following limitations:

  1. You have to build OpenSceneGraph for each target architecture
  2. You have to manually copy/reference built OpenSceneGraph libraries into Android Studio project

Our approach includes building OpenSceneGraph for those target architectures that Android Studio project is built for. Also, OpenSceneGraph is already referenced, so no extra work is required: you just need to rebuild the project, and you're done.

That's it for describing the creation of the tutorials for building sample OpenSceneGraph application under Linux, macOS, Windows, and Android in April 2017.