Commit Graph

56 Commits

Author SHA1 Message Date
Robert Osfield
dd996a3289 Introduced CMake option OSG_PROVIDE_READFILE option that defaults to ON, but when switched to OFF disables the building of the osgDB::read*File() methods,
forcing users to use osgDB::readRef*File() methods.  The later is preferable as it closes a potential threading bug when using paging databases in conjunction
with the osgDB::Registry Object Cache.  This threading bug occurs when one thread gets an object from the Cache via an osgDB::read*File() call where only
a pointer to the object is passed back, so taking a reference to the object is delayed till it gets reassigned to a ref_ptr<>, but at the same time another
thread calls a flush of the Object Cache deleting this object as it's referenceCount is now zero.  Using osgDB::readREf*File() makes sure the a ref_ptr<> is
passed back and the referenceCount never goes to zero.

To ensure the OSG builds when OSG_PROVIDE_READFILE is to OFF the many cases of osgDB::read*File() usage had to be replaced with a ref_ptr<> osgDB::readRef*File()
usage.  The avoid this change causing lots of other client code to be rewritten to handle the use of ref_ptr<> in place of C pointer I introduced a serious of
templte methods in various class to adapt ref_ptr<> to the underly C pointer to be passed to old OSG API's, example of this is found in include/osg/Group:

    bool addChild(Node* child); // old method which can only be used with a Node*

    tempalte<class T> bool addChild(const osg::ref_ptr<T>& child) { return addChild(child.get()); } // adapter template method

These changes together cover 149 modified files, so it's a large submission. This extent of changes are warrent to make use of the Object Cache
and multi-threaded loaded more robust.



git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@15164 16af8721-9629-0410-8352-f15c8da7e697
2015-10-22 13:42:19 +00:00
Robert Osfield
d18250da59 Replaced .osg with .osgt file usage 2011-06-14 16:54:20 +00:00
Robert Osfield
720551d549 From Michael Platings, Converted std::fstream/ifstream/ofstream to osgDB::fstream/ifstream/ofstream and
fopen to osgDB::fopen to facilitate support for wide character filenames using UT8 encoding.
2008-11-07 15:08:08 +00:00
Robert Osfield
22eae68e48 From Mathias Froehlich, "This is a generic optimization that does not depend on any cpu or instruction
set.

The optimization is based on the observation that matrix matrix multiplication
with a dense matrix 4x4 is 4^3 Operations whereas multiplication with a
transform, or scale matrix is only 4^2 operations. Which is a gain of a
*FACTOR*4* for these special cases.
The change implements these special cases, provides a unit test for these
implementation and converts uses of the expensiver dense matrix matrix
routine with the specialized versions.

Depending on the transform nodes in the scenegraph this change gives a
noticable improovement.
For example the osgforest code using the MatrixTransform is about 20% slower
than the same codepath using the PositionAttitudeTransform instead of the
MatrixTransform with this patch applied.

If I remember right, the sse type optimizations did *not* provide a factor 4
improovement. Also these changes are totally independent of any cpu or
instruction set architecture. So I would prefer to have this current kind of
change instead of some hand coded and cpu dependent assembly stuff. If we
need that hand tuned stuff, these can go on top of this changes which must
provide than hand optimized additional variants for the specialized versions
to give a even better result in the end.

An other change included here is a change to rotation matrix from quaterion
code. There is a sqrt call which couold be optimized away. Since we divide in
effect by sqrt(length)*sqrt(length) which is just length ...
"
2008-09-17 16:14:28 +00:00
Robert Osfield
f9c70f2f76 Added --unit entry for controlling which texture unit the overlay works on. 2008-04-11 14:14:28 +00:00
Robert Osfield
7ec5673a7e Added fire effect, enabled by --fire command line option. The new fire effect
has been introduced to reproduce the scaling of paricle effects
2008-03-17 10:29:23 +00:00
Robert Osfield
5213856929 Added passing of arugments into viewer constructor 2007-06-13 15:32:17 +00:00
Robert Osfield
cc0f1cb0fe From Martin Lavery and Robert Osfield, Updated examples to use a variation of the MIT License 2007-06-12 14:20:16 +00:00
Robert Osfield
607ecf17cc Added support for specifying external overlay file. 2007-06-10 20:46:53 +00:00
Robert Osfield
85c8797bc4 Moved HelpHandler and StatsHandler classes into ViewerEventHandlers header, removed HelpHandler and StatsHandler headers 2007-06-06 11:21:13 +00:00
Robert Osfield
8dd2c34e4d Improved the handling of the -p path option 2007-06-01 19:01:06 +00:00
Robert Osfield
e741afb5be Added recording of camera paths 2007-06-01 11:21:57 +00:00
Robert Osfield
4a4bca88f5 Added support for specifying which screen number to place the window 2007-05-29 13:28:40 +00:00
Robert Osfield
90a24a103f Comment out the setting of single threading. 2007-05-25 19:32:15 +00:00
Robert Osfield
a441b1cf35 Made the near far ratio lower to allow one to be near the terrain before clipping
comes in to effect
2007-05-19 13:38:38 +00:00
Robert Osfield
79b274b3d6 Added range of CameranManipulators to allow us to navigate the scene freely 2007-05-18 09:49:30 +00:00
Robert Osfield
7a66aaca15 Added -f/--fixed option to allow use to freeze the animation of the cessna. 2007-05-18 09:43:25 +00:00
Robert Osfield
d80cf6b5ee Futher work on view dependent OverlayNode 2007-05-16 19:19:43 +00:00
Robert Osfield
7b644e6d82 Added -n/--no-overlay option 2007-05-15 14:53:58 +00:00
Robert Osfield
e41cd46da8 Set up new view dependent overlay technique control methods 2007-05-14 20:23:10 +00:00
Robert Osfield
74e968df76 Clean up comments and rebuilt wrappers.
Added extra event handlers to osgsimulator example
2007-05-14 16:14:40 +00:00
Robert Osfield
b00cbe5a17 Moved include/osgTerrain/DataSet/.cpp, gdal plugin and osgdem out into the VirtualPlaneBuilder project.
Updated examples to remove DataSet/GDAL dependency.

Updated wrappers
2007-02-27 21:12:48 +00:00
Robert Osfield
d6291a0ffc Ported follow examples to osgViewer:
osgshape
    osgsimplifier
    osgsimulation
    osgslice
    osgspacewarp
    osgspheresegment
    osgspotlight
    osgstereoimage
2007-01-11 11:47:01 +00:00
Robert Osfield
41a4aa1548 Added viewer.cleanup_frame() to all examples. 2006-08-02 19:55:03 +00:00
Robert Osfield
dcdc2d492d Updated commandline docs 2006-07-18 13:37:42 +00:00
Robert Osfield
efeeabbef9 added SphereSegment test code segment, commented out at pressent. 2006-06-08 11:18:27 +00:00
Robert Osfield
43f0efd6d2 Reorganised the Group::removeChild and Geode::removeDrawable methods so
that removeChild(Node*), removeChild(uint) and equivilant Geode methods are
now inline methods, not designed to be overriden, and seperated out the
multiple remove method to be called removeChildren(uint, uint) which is
now the only virtual method.  There removeChildren is now the method to
override in subclasses.

This reorganisation requires some call code to be rename removeChild usage
to removeChildren.
2006-05-02 09:45:31 +00:00
Robert Osfield
051f2a5eb9 Added beginings osgprecipitation example. 2006-04-05 15:13:17 +00:00
Robert Osfield
943be478f4 Fixed function name call. 2006-02-23 12:39:31 +00:00
Robert Osfield
91855e7c50 Replaced tabs with spaces in examples. 2005-11-17 20:22:55 +00:00
Robert Osfield
d91f2c631d Improved handling of core OSG being compile with float Matrices. 2005-11-17 09:57:40 +00:00
Robert Osfield
2bd868cd1c Added release and flush of OpenGL objects after build of the terrain database to prevent
the build graphics context state leaking into the viewers graphics context set.
2005-11-09 20:26:34 +00:00
Robert Osfield
4d42be705d Reduced the size of the "oversized" cessna.osg 2005-11-09 13:39:08 +00:00
Robert Osfield
559219f519 Added initial interface for computing intersections between sphere segments
and terrain.
2005-09-08 13:10:04 +00:00
Robert Osfield
765db1998c Added support for cullable state, that uses a polytope to define the extents
of objects that will be influenced by it.
2005-09-07 16:18:43 +00:00
Robert Osfield
4e6a8cfcd5 Added s/getContinousUpdate(bool) method to OverlayNode. 2005-09-06 19:54:29 +00:00
Robert Osfield
a420782199 Added osgSim::OverlayNode setup in osgsimulation, and added preliminary test
code to the osgSim::OverlayNode to test osgsimulation/the architecture.
2005-08-31 15:04:27 +00:00
Robert Osfield
52f192f53f Reverted back to not test version of osgsimulation 2005-04-08 09:55:52 +00:00
Robert Osfield
4de8199011 Added #include <osg/io_utils> 2005-04-08 09:45:06 +00:00
Robert Osfield
4c362f5447 Introduced a flight path that goes around the earth going into the north and sound
hemisphere's with heading and roll adjustment.
2005-04-07 13:49:54 +00:00
Robert Osfield
1791f7c6b9 Corrected orientation of aeroplane and direction of rotation around earth. 2005-03-22 12:04:03 +00:00
Don BURNS
61d374b726 Added pragma to shut VS 6 up. 2004-11-29 18:59:36 +00:00
Robert Osfield
18cd77873a Changed fstream to ifstream 2004-10-15 09:53:18 +00:00
Robert Osfield
792a7fe0d5 Improvements to the NodeTrackManipulator and osgsimulation example 2004-10-14 10:38:29 +00:00
Robert Osfield
9ac2c02dc2 Increased the size of the inserted model so that it can be seen more easily, 2004-10-13 13:39:27 +00:00
Robert Osfield
debf8dceef Added s/getCullSettings to OsgCameraGroup 2004-10-05 19:12:46 +00:00
Robert Osfield
3b8abfa875 Added ability to alter the verbosity of the notify messages with the
running of osgTerrain::DataSet via a static s/getNotifyOffset(int) method.
2004-10-05 15:08:54 +00:00
Robert Osfield
54b45ce3bc Updated to DatabasePager support 2004-09-21 21:33:52 +00:00
Robert Osfield
b664c20c74 Improved the handling of building/writing generated databases, and
the fixed transition distances on the lower levels of geocentric databases.
2004-09-13 13:53:45 +00:00
Robert Osfield
146f4cd573 Remamed TrackerManipulator to NodeTrackerManipulator 2004-08-30 10:03:18 +00:00