Chapter Overview
| << Previous Chapter: Debugging Tips | Tutorial Overview |
Porting from 1.x Tips
This list of porting tips is based on the experience of Christian Bar moving a windows application from 1.x to 2.0.
To simplify some of the porting tasks OpenSG 2 was compiled with the OSGCOMPAT_ENABLE flag to cmake (cmake -DOSGCOMPAT_ENABLE=ON).
- remove all beginEditCP/endEditCP/CPEdit calls, they are now automatically handled
- Ptrs and RefPtrs are now renamed to RecPtrs, use them from now on
- Geometry properties are changed: they are now something like GeoUInt8PropertyRefPtr for the type, GeoUInt32PropertyRefPtr for lengths and indices, GeoPnt3fPropertyRefPtr for positions, GeoVec3fPropertyRefPtr for colors and normals, and so on
- multi-indexed geometry indices are now handled differently: you must use geo->setIndex(someIndices, Geometry::ColorsIndex), geo->setIndex(someOtherIndices, Geometry::TexCoordsIndex) and so on
- BoundingVolume does not exists anymore: use BoxVolume instead
- TextureChunk does not exists anymore: use TextureObjChunk and TextureEnvChunk instead
- !SHLChunk does not exists anymore: use !SimpleSHLChunk instead
- CubeTextureChunk does not exists anymore: use CubeTextureObjChunk instead
- ImageBackground does not exists anymore: use TextureBackground instead
- !TextTXFFace and TextPixmapFace are now RecPtrs and not simple C++ pointers, you don't need to addRef and subRef them anymore
- Thread and Barrier are now RecPtrs and not simple C++ pointers
- GraphOp child classes and GraphOpSeq are now RecPtrs and not simple C++ pointers
- Thread::getCurrentChangeList()->clearAll() does not exist anymore: use Thread::getCurrentChangeList()->clear() or Thread::getCurrentChangeList()->commitChangesAndClear()
- material->isMultiPass() does not exist anymore: try a dcast instead
- traverse method is changed, the new syntax is something like traverse(node, boost::bind(&YourNamespace::YourClass,YourMethod, this, _1)); YourMethod parameter is now a Node * and not a NodePtr
- use OSG::commitChanges() when you want to apply che changelist to the aspects (eg. to update the BoxVolumes)
- you need to substitute makeSphere() with makeLatLongSphere() to preserve texture coordinates
- I had to change the preprocessor defines of my applications and add to them "OSG_DEBUG;OSG_DEBUGRT;OSG_BUILD_ACTIVE;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_SECURE_SCL=0;_SCL_SECURE_NO_WARNINGS;_SCL_SECURE_NO_DEPRECATE" to make the release version work
- a lot of class->getSomething() methods do not exist anymore, use the class->editSomething() call instead
- point-to-vector and vector-to-point conversions are more restrictive, use point.subZero() and vector.addToZero() calls
- ShadowViewport does not exists anymore, you need to manage shadow rendering using stages (see the tutorials)
- under Windows if you want to read and write images or 3D models you need to call OSG::preloadSharedObject("OSGFileIO") and OSG::preloadSharedObject("OSGImageFileIO") before calling osgInit()
- OpenSG 2.0 is split in several dlls, remember to link them all
| << Previous Chapter: Debugging Tips | Tutorial Overview |
