1.10. Optimizations

Significant optimizations have been added since the initial 2.0 release in order to speed up computation and rendering.

The original SGI NURBS implementation has been replaced with FEI technology and offers significant advantages:

Particular effort has been made to provide additional features that are helpful for applications that deal with large amounts of data.

  • A texture node with memory management (SoExtTexture2( C++ | Java | .NET )): This node is similar to SoTexture2( C++ | Java | .NET ) but also manages system memory used to hold texture images, supports asynchronous texture loading, and can convert RGBA textures to indexed textures to reduce by 4x the texture memory required.

  • Pass-by-reference for all multiple fields (SoMFField), SoSFImage( C++ | Java | .NET ), and SoSFImage3( C++ | Java | .NET ): New methods allow you to pass values to Open Inventor by reference. All potentially large data sets (coordinates, normals, colors, etc.) are passed to Open Inventor though the multiple fields classes or the image fields SoSFImage( C++ | Java | .NET ) and SoSFImage3( C++ | Java | .NET ) (textures, images, etc.). The pass-by-reference enhancement allows Open Inventor to use data directly from application memory instead of making a copy of the data. For large data sets, this significantly reduces the amount of system memory used and increases performance, particularly if the application changes its data frequently.

  • A new field, fastEditing, has been added to SoSeparator( C++ | Java | .NET ). It allows you to modify the sub-scene graph of the separator without redrawing the entire Inventor scene; only the modified part is redrawn. This feature provides the greatest performance increase when the number of triangles in the modified part of the scene graph is relatively small relative to the entire scene graph. See the section called “Fast Editing” for details.

  • SoShapeHints( C++ | Java | .NET ) has a new field, useVBO, that allows you to speed up the rendering of large non-cached indexed shapes using the OpenGL Vertex Buffer Object feature. See the section called “Optimizing a Non-Cached Scene” for details.

Chapter 30, Optimizing Applications , deals with this topic.

OpenGL 1.1, 1.2, 1.3, 1.4, 1.5, 2.0, and 2.1 provide progressively more advanced rendering capabilities. Open Inventor version 2.2 and subsequent releases have used these versions of OpenGL on all platforms where they were available. Of course, for other platforms, OpenGL 1.0 is still supported. The main OpenGL 1.1, 1.2, 1.3, 1.4, 1.5, 2.0, and 2.1 features used are: