variable in the computeFastPathsUsed() method so that use of vertex arrays
can be forced off. This is a work around for a bug in the OpenGL drivers in
OSX/Panther.
ammendments by Robert Osfield, adding get/setSharedStateManager()
methods into osgDB::Registry, and clean up fixes in SharedStateManager
for the StateSet arrays.
limit the maximum number of occluders used in the cull traversal, default is
now 10.
Added set/getCollectOccluderVisitor() method into SceneView to allow control
of the the settings of the CollectOccluderVisitor.
/** Set the object-space reference radius of the volume enclosed by the PagedLOD.
* Used to detmine the bounding sphere of the PagedLOD in the absense of any children.*/
inline void setRadius(float radius) { _radius = radius; }
/** Get the object-space radius of the volume enclosed by the PagedLOD.*/
inline float getRadius() const { return _radius; }
/** Set the number of children that the PagedLOD must keep around, even if thay are older than their expiry time.*/
inline void setNumChildrenThatCannotBeExpired(unsigned int num) { _numChildrenThatCannotBeExpired = num; }
/** Get the number of children that the PagedLOD must keep around, even if thay are older than their expiry time.*/
unsigned int getNumChildrenThatCannotBeExpired() const { return _numChildrenThatCannotBeExpired; }
extra pass to doing tri stripping in the osgUtil::Optimzer.
Added validity checks into osg::TexEnvCombine to catch eronous enumarant values.
Improved the efficient of CullingSet's handling of new transforms.
Added a copy shared subgraphs and subdivision code into osgUtil::Optimizer.
Fixed crash associated with .osg files which contain empty description fields.
From Sondra Inverson, added support to .ive plugin for osgSim::DOFTransform.
_internalFormat for the texture format to read rather than default to GL_RGBA.
From Robert Osfield, changed the osg::Texture2D::copyTexImage2D and copyTexSubImage
code so that it set the _internalFormat to GL_RGBA if is is zero.
saved to .osg properly.
Added osg::ClusterCullingCallback to Drawable header/source. Not complete yet,
but will enable drawables to culled is they are facing away from the eye point.
to and command line arguments to set it.
Added support for using the DisplaySettings::getDisplayType() to detect use
of a Head Mounted Display when doing stereo so that the asymtric frustum can
be switched off.
Generalised the osgDB::Field so that its getFloat() method can be used with either doubles or
floats governed by the type passed in - this helps support either float/double
Quat and Matrix classes seemlessly.
methods to check all atributes and to report warnigns when errors are detected.
Added a CheckGeomtryVisitor to osgUtil::Optimizer to detect eroneous Geometry
before rendering.
the state stack, thus readying the state object to recieve a new frame.
Removed the state.reset() call in osgUtil::SceneView::cull() as this was
causing problems with stats producing inheritance of state when toggling
stats on.
Made Matrix be a typedef to either Matrixf or Matrixd. Defaults to Matrixf.
Converted the osgGA::MatrixManipulators and osgProducer::Viewer/OsgCameraGroup
across to using exclusively Matrixd for internal computations and passing betwen
Manipulators, Producer and SceneView. Note, SceneView still uses Matrix internally
so will depend on what is set as the default in include/osg/Matrix.
Added the ability to osgProducer::setDone/getDone(), kept done() as the
method that the viewer main loop uses for detecting the exit condition.
value to float, and converted the internal code across to use value_type. This
allows Matrix to be converted to use double's simply by change the definition
of value_type. Added Matrix::glLoadlMatrix and Matrix::glMultMatrix() to
help encapsulate the changes between float and double matrix usage.
Updated code that uses Matrix so it doesn't assume float or double matrices.
part of prep for supporting both Matrixf (float) and Matrixd (double).
Added osg::Matrixf::glLoadMatrix() and osg::Matrixf::glMultiMatrix() methods
and changed corresponding usage of glLoad/MultMatrixf() calls across to use these
methods. Again prep for support Matrixd.
Fixes for VisualStudio 6.0 compile.
made ENABLE_ALL_CULLING enable all culling including the near and far plane.
DEFAULT_CULLING is now used for the default as uses the same original
values as ENABLE_ALL_CULLING once did - view frustum culling with near and
far culling. SceneView now uses DEFAULT_CULLING.
GL_TEXTURE_WRAP_S for all texture targets.
GL_TEXTURE_WRAP_T for all texture targets except GL_TEXRTURE_1D
GL_TEXTURE_WRAP_R for only GL_TEXTURE_3D
And changed the defaults to OpenGL defaults of GL_REPEAT.
this are replaced by the osg::computeLocalToWorld/WorldToLocal() functions
found in osg/Transform.
Made the ReleaseTextureAndDisplayListsVisitor a public nested class of
osgDB::DatabasePager to allow it to be used in the TXP plugin, and added
usage of this visitor to the TXP plugin to make sure that textures and
display lists are released during the update thread.
Added computeInternalOptimziedGeometry() and associated methods to Geometry
to support alternate versions of a geometry to be used to optimize rendering,
such as flattening indexed attributes to straight attribute arrays.
the text implementation to provide better speed, especially by using the
alignement to screen option.
Deprecated the Text::setFontSize(,) method, which is now being replaced
by setFontResolution(,)
Fixed typos in Texture*.cpp.
Removed old deprecated methods from osg headers.
osgSim::LightPointNode, the max pixel size from was originally in osg::LightPoint.
Added additional get/set methods to osg::LightPointNode.
Increased the compute pixel size by a ratio 1.41 (sqrtf(2)) to correlate the
computed size with the actual size seen on screen.
hardware generate mip mapping.
Added switching off generate mip map from osgText::Font.cpp.
Changed savedmodel.osg to saved_model.osg in ViewerEventHandler.
Removed the rescalling of images in osg::Image during texture apply, moving
the rescale so it is locally calculated. This solves an outstanding threading
problem which occured by multiple draw threads all tried to rescale the same
image at one time.
Made osg::Image ptr in osg::Texture2D non mutable as it is no longer modified
during apply.
2) Changed Makedepend system to make individual dependency files, which
should save time rebuilding dependencies by limiting the regeneration
of dependency file for only modified source files.
by osgUtil::RenderLeaf to test if any abort state has been set, if so it
doesn't do any further drawing.
The osgProducer::Viewer has been set up to set the osg::State's it manages
with their AbortRendering flag pointers set to the osgProducer::Viewer::_done
memeber varaible. Now when escape is pressed the rendering is aborted early.
osg::Image::setImage has also been modified to require the AllocationMode
mode to be passed to it so that it knows how to delete the data once the
image goes out of scope.
Port the image plugins across to specify the new AllocationMode, and converted
them across to using new/delete in place of malloc/free.
any reference to these in the distribution across to using unsigned char,
unsigned short etc. This has been done to keep the OSG code more opaque
to what types are.
caches so that they use a std::vector<> swap on the internal data structures
when ready to delete to minimize the amount of time that a race condition
condition can happen.
compile even when dislay list is off. This has been done to allow subclasses
of Drawable handle their own compile implementation, such as used by text.
Steel obtained from MPI.
Removed the unique child check from the flt::PrimRecord and osg::Group, this
allows more flexibility when specifing nodes, and is faster..
associated variables which were only compiled in on debug build. These optional
methods/static vars were causingproblems when mixing debug and release builds.
that they arn't created on the stack inappropriately.
Split the implemention of Matrix up so that it is a simple no referenced counted
class and can be safefly created on the stack. To support referenced counting a
seperate subclass now exists, this is RefMatrix which inherits from both Matrix and
Object.
PositionAttitudeTransform, removed the equivialnt callbacks once found in these
transform classes.
Changed the NodeCallback class so its derived from osg::Object instead of
osg::Referenced to allow it to be saved out in the .osg format.
Added support for Update and Cull callbacks into the .osg file format.
Added support for AnimationPathCallback into the .osg file format.
checking for the validity of _image before doing checks on it. This breaks when
render to texture is used as there is no image to check against...
Added osgshadowtexture demo source. Demos still in development, so don't expect
any shadows yet...
Added new osg::State::setInterleavedArray() method.
Added new osg::Group::setNode(uint,Node*) method.
Cleaned up and fixed the osg::Texture's handling of dirtyTextureParamters().
the osgGA::AnimationPathManipulator to handle it.
Added a new Drawable::ConstAttributeFunctor and make the accept(PrimitiveFunctor)
be a const method so can disallows modification. Added Drawable::supports(...) methods
for each of the AttributeFunctor, ConstAttributeFunctor and PrimitiveFunctor so
that programs can querry whether it is possible to use functors with that object type.
the clash with the parameter type itself.
Addd a PER_PRIMTIIVE_SET handling to the existing PER_PRIMTIIVE code, this code
is still flacky though and needs a rewrite as it doens't handle all attributes or
the full consequences of per primitive and per primitive set bindings.
Added missing support for reading geometry indices from the .osg format.
Added handling of geometry indices into the primitive functor in osg::Geometry.
Moved the method implementions of AnimationPathManipulator into src/osgGA and added extra convinience
methods for setting the manipulator with an hand built AnimationPath.
FCVS: VisualStudio/osgPlugins/iv/iv.dsp
where the header file declared a parameter non-const, but the function
definition expected a const. The Solaris linker was coming up with
undefined symbols.
be individually turned on or off. Moved the OpenFlight code across to use the
new scheme, removing the old hack of using node masks to achieve the same end
result.
osg::Geometry class, and removed the temporary IndexedGeometry. Port the rest
of the OSG across to account for the change in method calls -
osg::Geometry::addPrimitive(..) becomes osg::addPrimitiveSet(..)
convertToIndexedGeometry() method to GeoSet to allow datasets with per primitive
bindings to be be mapped to across to osg::IndexedGeometry for testing purposes.
encapsulates.
Added new osg::IndexGeometry implemention, *not* complete yet.
Changed the rest of the OSG to handle the renaming og Primitive to PrimitiveSet.
code which modifies the OpenGL state and needs to tell the osg::State
about it to ensure that the OSG doesn't make any errors during lazy
state updating.
initializes the array to the number of graphics contexts, and automatically
expands the array when indices outside the current size are required.
Added new osg::Texture::Extensions nested class to handle extensions on a per
context basis.
orignal seperate headers and source into include/osg/UnitTestFrameWork
and src/osg/UnitTestFramework.cpp respectively. I have done this to
keep the include and source directories focused on the scene graph rather
than the test framework.
Have added a very simple unit test to Vec3.cpp, which are optionally
compiled in with the OSG_COMPILE_UNIT_TESTS define, which is only
currently defined in debug builds under unix. It should be fine to
add it in under Windows project files as well.
Finally, a new demo app osgunittests runs the tests and reports success
or failure of the tests.
added osgtexture1D demo which currently is simply copy of osgtexture2D. I
will be modifying it to do 1D texturing next.
Fixed a bug in osg::Texture3D relating to checking of existance of
texturing.
Merged some fixes to the pfb loader from Ulrich Hertlein.
and a fix to osg::State's secondary color code from Bob Kuehne.
Moved the body of the getGLExtensionFuncPtr() into the header to help out
support for Windows mapping of different OpenGL extensions function ptr per
dll.
Added osg::Matrix/Quat::makeRotate(angle1,axis1,angle2,axis2,angle3,axis3) and
osg::Matrix::rotate(angle1,axis1,angle2,axis2,angle3,axis3) method.
Made osg::Matrix/Quat::makeRotate(heading,pitch,roll) and
osg::Matrix::rotate(heading,pitch,roll) all deprecated API.
Fixed the Quat*Quat & Quat*=Quat multiplication methods so that they multiplied
in the correct order - they were reversed originally due to the Quat code being
based on code example which used the v' = M v ordering, rather than the OSG's
v' = v M ordering.
osg::PositionAttitudeTransform::AnimationPathCallback which us an app callback
which uses an AnimationPath to specify the new positions of the transform.
Added AnimationPath code to osglight to animate the positional light.
Added CullVisitor::setCullingMode() code into SceneView so that SceneView's
CullingMode is now properly passed onto CullVisitor. Note, this work
had been done before, but must has been lost in a merge. Umm...
rather than depending upon callbacks for animating and compute matrices. Merged the
put/inverseput code between Sasa's and Ferndinand's DOF code.
From Bora Utka, Added support to osg::Sequence/OpenFlight AnimNode to the flt plugin.
on osgUtil by implementing a NodeVisitor::VisitorType enum, and associated
g/setVisitorType. This allows callbacks to querry the visitor/traversal
type without doing down cast's to specific visitor subclasses such as
osgUtil::AppVisitor/CullVisitor.
Rewrote the osgbillboard demo so that it creates a point rotatated billbaord
and X,Y and Z axis billboards to both test and demonstrate this types of
billboards in action.
code in Texture::apply() to set the _image to 0 on apply. Note,
this will only work when you have a single graphics context, as
with multiple graphics contexts one can't delete the image after
the first apply, as there will be more than one texture object to
update.
Added default computeBound() implementation to osg::Drawable which uses
a PrimtiveFunctor to compute the bounding box in a generic way, that
will work for all Drawable subclasses that implement the accept(PrimitiveFunctor&).
decoupled from osg::Drawable. The Drawable::getStats() virtual method
no longer exists.
Updated the Viewer to use the osg::Statistics incarnation and reformated stats
to clean it up.
OpenGL range of 0.0 to 128.0 instead of the previous normalised shiniess
range. This brings it inline with the way the rest of the OSG uses a
1 to 1 mapping to OpenGL.
Converted the various loaders to use the new range, which is almost all
cases was simply removing the /128.0f which was required before!
all unsed texture units can be turned off simply within Drawables such
as Geometry and GeoSet. This can be used to prevent bleed of arrays from
one object to the next - which can cause crashes.
various
osg header and source files to optional compile in deprecated parts of
the
OSG API.
Have renamed osg::Transparency osg::BlendFunc to bring it in line with
the
rest of the OSG's StateAttribute classes which are named after their
OpenGL counterparts. include/osg/Transparency still exists and is
simply
a typedef to BlendFunc and is enclosed in a #ifdef USE_DEPRECTATED_API
block.
The matrix methods in the osg::Transform class have been
moved/replicated in
a osg::MatrixTransform sublcass from osg::Transform. The old matrix
functionality is still present in the osg::Transform class but is guard
by #ifdef USG_DEPRECATED_API blocks. One should now think of
osg::Transform
as being a Transform Node base class. MatrixTransform has all the
functionality of the original Transform class, so should be used
instead.
it inline with the CullStack/CullVisitor implementation. Also added the
setSmallFeatureCullingPixelSize() method and wired them up inside
SceneView.cpp so they set the corresponding CullVisitor paramters.
Intergrated pfImage copying change in the Performer plugin, submission sent in by Ulrich Hertlein
implementations for all the public functions found in the header,
this should prevent problems when not compiling in the MemoryManager
under IRIX 64 build.
inside the osg::Image::ensureValidSizeForTexturing() method. The
smallest of GL_MAX_TEXTURE_SIZE and OSG_MAX_TEXTURE_SIZE is used for the
final max texture size.
This new env. var. allows users to deliberate cap the size of their textures
so they can test whether their models are limited by texture memory. If
reducing the max texture size increases performance then you are limited
by texture memory!
Added support for osg::BoundingSphere::expandBy*(osg::BoundingBox) and have
added osg::BoundingSphere/Box::valid() which deprecates isValid(), this
is to be more consistent with other classes in the OSG.
the number of occluder that will be used in cull traversal to only the
ones that will be effective. Note. Holes in occluders arn't handled in
this occluder occlusion test, will implement this later.
a fully functioning NodeKit.
Also reimplement notify() to try an prevent a crash which has been caused by
to objects in notify.cpp being initiliazed twice, the second time the auto_ptr
holding the dev/null ofstream was being initilized to 0.
VisualStudio .NET compile.
Added support for OSG_NOTIFY_LEVEL and OSG_FILE_PATH into the relevant getenv
routines. This compliments the exisiting OSGNOTIFYLEVEL & OSGFILEPATH which
are deprecated but still supported. The OSG_ version are more consistent
with the rest of the env variables used in the OSG.
Supported added for precompiled mip maps stored in osg::Image, and read
by osg::Texture.
Updates to TerraPage loader for support of compressed texture images and
precompiled mip maps.
Converted AnimationPath so it is now subclassed from osg::Transform::ComputeTransfromCallback()
so that it can be directly attached to the scene to move objects about.
Changed the osg::SateSet::setGlobalDefaults() so that is sets GL_DEPTH_TEST
to ON.
Added guards and creation of default helper classes in osgGLUT::Viewer and
osgUtil::SceneView so that sensible defaults are used when no settings
are used of osg::State/StateSet,osgUtil::RenderStage/RenderGraph/CullVisitor.
it conforms to the OpenFlight convention of euler angles. Added documentation
into Matrix and Quat to reflect this.
Added so test code to osgcube for stress testing memory allocation and deallocation.
Commented out the registering of app and cull callbacks in osghud.
modelview matrix rathan than an identity matrix, this matrix is then modified
locally.
Changed the osg::Matrix set methods so they are inline.
Added a few useful comments to MemoryManager.cpp to help people understand
the assert's better.
renamed osg::Image::pixelFormat(), internalTextureFormat(),dataType() to
osg::Image::getPixelFormat() etc. These changes are to bring it more
into line with the style of the rest of the OSG.
Updated the rest of the distribution to take account for these names changes.
osg::Camrea::getModelViewMatrix() and osg::Camera::getProjectionMatrix() are
calculated on the fly. Removed various redudent methods, including the
project and unproject methods which are better supported within osgUtil::SceneView.
Added a computeWindowMatrix() method to Viewport, to make it easier to construct
a MV*P*W matrix for converting local coords into screen coords and visa versa.
Converted SceneView and CullVisitor to use this new method.
did a check on forcing 16bits textures in osg::Texture (which speeds things
up on the Umea model which is performance bound by texture memory.), the
later check is now commented out.
support out of Camera and into SceneView. Also enabled the option to set the
projection and modelview matrices directly on SceneView thereby removing the
dependance on osg::Camrea to control the view of the scene.
which objects have values that vary over the lifetime of the object (DYNAMIC)
and ones that do not vary (STATIC). Removed the equivalent code in
osg::Transform, StateSet and StateAttribute, as these are now encompassed
by the new DataVariance field.
Removed MatrixMode enum from Matrix, and associated fields/parameters from
osg::Transfrom and osg::NodeVisitor, since MatrixMode was not providing
any useful functionality, but made the interface more complex (MatrixMode
was an experimental API)
Added ReferenceFrame field to osg::Transform which allows users to specify
transforms that are relative to their parents (the default, and previous behavior)
or absolute reference frame, which can be used for HUD's, camera relative
light sources etc etc. Note, the view frustum culling for absolute Transform
are disabled, and all their parents up to the root are also automatically
have view frustum culling disabled. However, once passed an absolute Transform
node culling will return to its default state of on, so you can still cull
underneath an absolute transform, its only the culling above which is disabled.
osg::Image::readPixels to encapsulate glReadPixels.
Reordering of includes in include/osg/Fog and include/osg/Light to remove silly warnings under Visual Studio.
osg::Drawable. Added osg::Image::readPixels to osg::Image.
Made osg::LightSource to default to cullActive set to false to that LightSource
nodes don't get culled by default.
added prefixes and suffixes to libs and plugins. ALl this to accomodate
cygwin...
Also added INST_SYS_PREFIX and INST_SHARE_PREFIX for installation, as well
as "standardizing" the install locations for the various platforms.
the Make directory is left with four files only :
makedefs
makerules
makedirrules
instrules
These work for all platforms supported so far, which include :
Linux
Irix
Solaris
MacOSX
Cygwin
FreeBSD
in progress for the new support for controlling the projection matrix from
within the scene graph.
Also Added osg::State::getClippingVolume(), getProjectionMatrix() and
getModelViewMatrix() with allows drawables to access the current projection,
and model view matrices and the view frustum in local coords to the drawable.
it now maintains references to the last applied matrices, automatically doing
lazy state updating. This simplifies the various places in the OSG which
were previously doing the applying, add paves the way for managing the
projection matrix within the scene graph.
Remove MemoryAdapter and mem_ptr as they arn't being used, and can potentially
confuse users by their existance.
osg::Texture. The values default to 0, and in this state they are
sizes of the glTexSubImage2D are taken from the source image size. This
allows the previous setup with no settings for subload size to work as
before.
memory manager published at flipcode.com. This can be turned on
with the OSG_USE_MEMORY_MANGER option which then uses custom global
new and delete operators as well as provide osgNew and osgDelete macro's
which add ability to log line and file from which calls are made.
Updated osg,osgUtil,osgDB,osgText and osgPlugins/osg to use osgNew/osgDelete,
and fixed memory leaks highlighted by the new memory manager.
published at flipcode. I havn't adopted Paul's macro's for new/delete etc, but use
osg prefixed versions instead to allow greater flexiblity in handling include
ordering.
Have fixed a couple of new/delete[] problems which existed as a result.
To use the MemoryManager to track memory usage simply add
-DOSG_USE_MEMEORY_TRACKING to the compile line.
Have yet to move the osg from using new to osgNew, will do this next.
easier to specify which modes and attributes have been modified without
the user requiring to know to what value, or to have an equivilant attribute
to pass to the have_applied_attribute method. The original have_applied(mode)
and have_applied(attribute) methods have been renamed have_applied_mode(),
have_applied_attribute() as this was required to prevent the mode and type
values colliding during compile (it was causing a compile error when the method
names were the same.)
much more of the core texture setup code. This largely invloved paramterizing
the applyImmediateMode, which has also been rename applyTexImage to reflect
its functionality better.
include change the CameraManipulators so they work with double for time
instead of float. Also added support for DataType to osg::StateAttribute
and StateSet so that they can be set to either STATIC or DYNAMIC, this
allows the optimizer to know whether that an attribute can be optimized
or not.
mode by using a _texParamtersDirty flag in combination with an
applyTexParamters(State&) method which does the paramters setting in one
tidy bundle. This new implementations replaces the CompileFlags submitted
yesterday.
Simplified NodeCallback by remove osg::NodeCallback::Requirements as they
are no longer needed.
Fixed comments in Drawable.
Put guards around cosf definations so that they are only used under Win32/Mac.
Fixed warning in CullVisitor.
Change the osg::NodeVisitor::getLocalToWorldMatrix() /
getWorldToLocalMatrix() methods so it do not initilize the matrix being
passed to them, and assume the the users has already initiliazed them
appropriately, such as to take account of camera positions.
the conclusion that the osg::Matrix::inverse was broken, have lifted a new
implementation from sgl and it seems to work fine. Will need further testing
but looks good.
objects that are deleted whilest still having a positive _refCount, such
as when a object has been deleted on the stack, yet other references still
exist for it. Have put the desctructor implementation in Object.cpp to
avoid adding yet another file with only a couple of lines of code in.
by adding a ComputeTransformCallback to osg::Transform, and have now removed
the recently added AutoTransform since it is nolonger required. Have also
updated CullVisitor to account for the new ways for tracking transformation
matrices in the scene.
class now combines Cloner and DeepCopy into one class. Cloner and DeepCopy
will be removed in next commit.
Also have added osgcopy app to Demos which shows how the CopyOp have be
subclassed to create users own specific handling of copying.
Have fixed copy constructor problems in GeoSet which fix the deep copy
problem experienced yesterday.
copy constructor which takes an optional Cloner object, and the old
osg::Object::clone() has changed so that it now requires a Cloner as paramter.
This is passed on to the copy constructor to help control the shallow vs
deep copying. The old functionality of clone() which was clone of type has
been renamed to cloneType().
Updated all of the OSG to work with these new conventions, implemention all
the required copy constructors etc. A couple of areas will do shallow
copies by design, a couple of other still need to be updated to do either
shallow or deep.
Neither of the shallow or deep copy operations have been tested yet, only
the old functionality of the OSG has been checked so far, such running the
viewer on various demo datasets.
Also fixed a problem in osg::Optimize::RemoveRendundentNodesVisitor which
was not checking that Group didn't have have any attached StateSet's, Callbacks
or UserData. These checks have now been added, which fixes a bug which was
revealled by the new osgscribe demo, this related to removal of group acting
as state decorator.
method
and getWorldToLocalMatrix(), computeLocalToWorld() and computeWorldToLocal()
methods.
Have updated the CullVisitor, IntersectVisitor and Optimizer to use the
new osg::Transform::getLocalToWorldMatrix() which has the same functionality
as the old getMatrix() but is now supports subclasses of osg::Transform
transparently.
Have added osg::PositionAttitudeTransform as subclass of osg::Transform
which manages the transform as position and attitude via a Vec3 and Quat
respectively.
modes first then attributes since the it was cause a display bug on some
datesets. It seems that the modes needs enabling before glMaterial's
take affect, at least on the NVidia drivers under Windows and Linux.
The OpenGL reference guide doesn't mention any dependancy so I'm not
sure what the official line is. Some other OpenGl attribute and modes
need to be applied in that order according to the blue book, however,
drivers, at least the NVidia drivers seem require the opposite. This may raise
the spectra of before and after mode applies, but this will require extra
support in osg::State and osg::StateAttribute, and would have to be handled
on a per attribute basis, and possibly different of each platform. Yuck.
attributes are now set first, then modes. This is keep consistent with
the setting of glColorMaterial and glEnable(GL_COLOR_MATERIAL) as specfied
in OpenGL documentation.
matched does not have a corresponding child to relate to. This can happen
if a user creates more than n+1 ranges, where n is the number of LOD children.
OpenGL light is being operated on, and also now relies upong the standard
osg::State handling of OpenGL modes to switch on the appropriate lights.
The previous static counter mechansim for the light number was causing a
redundent light to be created when the osg plugin created the first osg::Light
to use a prototype for other osg::Light's to be cloned from in the
.osg plugin execution.
The static count mechanism also prevent the lights modes being controlled
independantly from the setting of the light paramters themselves. This
meant that a light once created was global, and couldn't be turned off
locally via the OSG's support for OpenGL mode enabling/disabling. This
has been overcome with the new implementation, the user has complete
flexiblity of when and where to use the different lights at their
disposal.
Renamed the osg::VisualsSettings to osg::DisplaySettings, and
osgUtil::VisualsRequirementsVisitor to osgUtil::DisplayRequirementsVisitor.
Added support for OSG_SCREEN_HEIGHT into osg::DisplaySettings, and added
a DisplaySettings* to the constructors of osg::SceneView and osg::Camera.
constructor such that a static variable is used to force the constructor
to check the number of clock cycles per second once, this means that
multiple timers can now be created with incurring a the 1 second delay
used for timming the clock speed every time the constructor is called.
it consistent with the rest of the osg::Matrix naming. Updated OSG
distribution to account for new name.
Added support for the STATIC/DYNAMIC osg::Transform::Type to the .osg
ASCII reader/writer plugin and the flt reader plugin.
Removed the non cost version of osg::Transform::getMatrix() as this could
by pass the dirty mechinism.
the functionality clear given the name. This will break user code unfortunately
so please be away of the following mapping.
osg::Matrix::makeTrans(..)?\026 -> osg::Matrix::makeTranslate(..)
osg::Matrix::makeRot(..)?\026 -> osg::Matrix::makeRotate(..)
osg::Matrix::trans(..)?\026 -> osg::Matrix::translate(..)
osg::Quat::makeRot(..)?\026 -> osg::Quat::makeRotate(..)
Also updated the rest of the OSG distribution to use the new names, and
have removed the old deprecated Matrix methods too.
so that they both use the same implementation (the Quat code now) and the
code has been corrected to work from and to vectors which directly opposite
to one another.
default AttributeDeleteFunctor which uses delete []. Users can create
their own handlers for the attribute memory to override this default
behavior.
Fixed a typo in ReaderWriterOBJ.cpp.
Updates to the osg::Transform, adding preMult and postMult methods and
deprecating the old preRotate,preTranslate,preScale.
Updated the rest of the OSG so that it nolonger uses the deprecated
osg::Transform nodes.
Renamed osgUtil::SceneView::setGlobalState() to
osgUtil::SceneView::setGlobalStateSet() so that the name reflects its
functionality better. Updated osgGLUT::Viewer etc to cope with new
name change.
list of text drawables as a paragraph block, handles breaking of text into
individual lines automatically.
Changed the osg::Node::setUserData so that the data type has to be an
osg::Referenced, and removes the dependancy on osg::MemoryAdapter. I have
done this since it simplifies the OSG side of the interface and makes it
less like that the user might abuse the memory managment of the data. It
does however mean that user data will have by subclassed from Referenced,
and therefor may require users to have their own adapter to do this.
However, this little nuasance is worth the extra cleaness and robustness
afforded by going the osg::Referenced route.
to allow it to use different comparison schemes, now it can use checking for pointer equality (the default)
or attribute contexts. This has been added to assist optimization of databases within the flt loader, but
also could be useful for other operations too.
should be applied to a node or its child with the new osg::Node::setCullingActive()
flag. A mechanism has been implemented so that if child has its culling disabled
then their parents, all the way up to the root are also have their culling
implicitly disabled.
The osg::CullVisitor has updated to take account of
both the explicit control via setCullingActive and the implicit culling
disabling through children being disabled.
This feature is useful for nodes which don't have a bounding volume to cull
against, earth sky implementations and light sources.
The default osg::Node::_cullingActive is true, i.e. culling is enabled by
default.
these global attributes are created by cloning any attributes which are
applied during rendering, the clone in a shallow copy, which will set up
default valus for that attribute. This should prevent attribute bleed
from one stateset to the next when the global StateSet doesn't contain
an attribute used within the scene graph.
This is probably due to an error on the gamasutra web page demonstrating this.
It caused left-handed rotations rather than right handed rotations. Should be
fixed now.
and have updated GeoSet to use mutable values for the _numverts etc, allowing
osg::GeoSet::computeNumVerts() to be a const operation. osg::GeoSet::getNumVerts
is now a const once more, so avoiding compilation problems. Also chaned the new
osgconv orientation code to use a Drawable::AttributeFunctor so it can work on
other Drawables other than just GeoSets.
updated the ReaderWriterBMP.cpp (mods sent in my Geoff Michel) and
moved the osgUtil::Statistics to osg::Statistics in preperation to adding it
to the the Drawable base class.
Also move osg across to using radians for angular paramters by default.
By defining USE_DEGREES_INTERNALLY you can get the OSG to revert to
the old style degrees. This later feature is deprecated and only meant
for helping comptability in the interim.
added support in osgUtil::OptimizeStateVisitor for removing duplicate
StateSet's from the scene graph, previously only duplicated StateAttributes
we're removed.
glMatrixMode( GL_MODELVIEW ); after the setting of the texture matrix.
Previously the texture matrix mode could run into normal model view
matrix operations which were assuming the defaul of GL_MODELVIEW.
to the StateSet::setGlobalDefault() so that the correct default for the glDepthFunc etc are set up for scene graphs, and allows override of these value which risk of inheriting state on to the rest of the scene graph.
This has allowed the hangglide demo to be simplified since it now doesn't need to set the global Depth instance itself.
Also added Matrix::ensureRealized() to support the lazy initialization of Matrix, whilest keeping the implementation robust so that external calls to Matrix which get values do so on an initialized matrix.
2) cleaned up osg::Timer, still in progress. My intent has been to
pave the way for support for other OS's.
3) new osg::FrameStamp class which has a frame number, reference
time for each frame to be app, culled and drawn. The FrameStamp
also can be passed to other machines (i.e. cluster) and the
FrameStamp can be used with the slaves own app,cull and draw.
I've also added the beginings of a calander time data to the
FrameStamp to allow time or day and year to be used in setting
up position of sun/moon etc. etc.
4) The osg::State now has contains a pointer to the last applied
osg::Camera and the current osg::FrameStamp, so that drawables
can use both pieces of information for creating effects such
CLOD, earth/sky etc. The osg::NodeVisitor also now allows you
to attach a FrameStamp to support syncronization of actions on
the scene graph.
but getting there.
o First cut of osgcluster demo. Very simple beginings. Alas
I only one PC here so I can't test it in its current guise.
o New support for NodeCallbacks, via AppCallback attached to
osg::Node's, and a default osgUtil::AppVisitor which calls them on
each frame.
o Support for traversal masks in osg::NodeVisitor, osg::Node
which allows nodes to be switched on or off via a bit mask.
o Suppport for traversal number (frame number) and reference time
into osg::NodeVisitor to handle syncronization of app and cull
traversals. This also assist clustering as traversal number
master to slaves.