Updated NEWS for the release.

Fixed warnings.
This commit is contained in:
Robert Osfield
2003-04-18 15:59:34 +00:00
parent 1c8db044f1
commit bc8bd29646
6 changed files with 108 additions and 97 deletions

127
NEWS.txt
View File

@@ -3,76 +3,95 @@
OSG News (most significant items from ChangeLog)
================================================
osgProducer library adds very tight integration with OpenProducer,
provide the OpenSceneGraph with a scalable, configurable and portable
framework for developing real-time and interactive graphics application.
The scalability afforded by OpenProducer allows applications to be
developed which seemlessly run on single pipe machines up to multi-pipe
machines such as Sgi Onyx IR system, and Sun Zulu systems, through
to running of clusters. The osgProducer/OpenProducer framework
automatically handles the multi-threading of cull-draw pairs and GUI
events.
18th April 2003 - OpenSceneGraph-0.9.4
>>> Multi-threaded, multi-pipe support via integration with OpenProducer,
>>> 64bit Linux support for Intel Intanium and AMD Opteron,
>>> new osgText library with greater performance, and thread safety,
>>> new DDS plug-in for compressed and non-compressed images,
>>> new MD2 plug-in adds support for animate Quake character,
>>> support added for NV_texture_rectangle.
The most significant new feature is the osgProducer library that adds
tight integration with OpenProducer, providing the OpenSceneGraph with a
scalable, configurable and portable framework for developing real-time
and interactive graphics applications. The scalability afforded by
OpenProducer allows applications to be developed which run seamlessly
on single pipe machines up to multi-pipe machines such as Sgi Onyx
IR system, and Sun Zulu systems.
The osgProducer/OpenProducer framework automatically handles the
multi-threading of cull-draw pairs and GUI events.
All the example programs have been ported over from being based on
GLUT to using osgProducer. This allows all the examples to scale from
running on laptops up to multiple cpu and graphics pipe systems. The
GLUT to using osgProducer. This allows all the examples to scale from
running on laptops up to multiple CPU and graphics pipe systems. The
configuration of threading and multiple camera views can all be done
via ASCII configuration files, no need to recompile.
via ASCII configuration files, no need to recompile. A number of
new examples have also been added or revamped, bringing the total to 42.
Added Linux 64 bit support for IA64 (Intel Itanium) and x86-64 (AMD Opteron)
which augments the existing support for Solaris and IRIX 64 bit compilation.
64 bit supports allows the use of very large data set, and potential
peformance improvemnts.
Also in the theme of increasing scalability there is support for 64bit Linux for both
IA64 (Intel Itanium) and x86-64 (AMD Opteron) which compliments the existing
support for Solaris and IRIX 64 bit compilation. 64 bit supports allows
the use of very large data sets, and potential performance improvements.
Improvements to the makefile system, all makefiles are now named
GNUmakefile which ensures that they are only run by gmake. The new system
allow multiple build targets to be built from one source code install.
To help support development teams working with multiple build configuration,
the makefile system has been extended to allow multiple build targets to be
built from one source code base. All makefiles are also now named GNUmakefile
which ensures that they are only run by gmake to avoid an confusion on system
where gmake isn't the default make tool.
Completely new osgText implemention which is simpler to use, faster, and
thread safe. Support for high quality true type fonts has now been moved
to a freetype plugin which is dynamically loaded on demand, with the
core osgText library providing a default font when the plugin is
unavailable. Moving the freetype dependancy out of the osgText allows
the text library to be just dependant on OpenGL and Standard C++ like
the rest of the core libraries, virtual of this osgText now compiles
by default on platforms.
A completely new osgText implemention has been developed which is simpler
to use, faster, and thread safe. Support for high quality true type fonts
has now been moved to a freetype plug-in which is dynamically loaded on demand,
with the core osgText library providing a default font when the plug-in is
unavailable. Moving the freetype dependency out of the osgText library makes
it just dependant on OpenGL and Standard C++ like the rest of the core libraries,
allowing osgText to compile by default on all platforms.
Improved thread safety when working multipipe systems.
Improved thread safety has also been achieved in the core osg and osgUtil libraries
making work on multiple CPU/multi-pipe systems robust and with improved performance.
New DDS plugin for loading compressed and non-compressed images.
New MD2 plugin which allows Quake animated characters to be loaded
into the OSG.
Two new plug-ins have been added, for loading DDS and MD2 data formats. The DDS plug-in
is for loading compressed and non-compressed images. The MD2 plug-in loads Quake
animated characters.
New osg::TextureRectangle texture class which encapsulates the
NV_texture_rectangle and EXT_texture_rectange extensions.
osg::TextureRectangle class has been added, which encapsulates the
NV_texture_rectangle and EXT_texture_rectangle extensions. This is particularly
useful for render to texture algorithms, and dynamic paging of images such as for
rendering video streams.
Added automatic subloading of textures when image data is updated.
Support for automatic subloading of osg::Texture2D textures has been added
so that when image data is updated the corresponding OpenGL texture is
automatically updated - no need for callbacks. Also added to the osg::Texture
classes is the option of automatic unref'ing of texture image data once the data has
been download to all active OpenGL graphics contexts.
Added the option of automatic unref'ing of texture image data once the data has
been download to OpenGL to active graphics contexts.
New osgUtil::DelaunayTriangulator utlity class for tesselating data points.
A new osgUtil::DelaunayTriangulator utility class has been added. This is ideal for
creating optimal triangular meshes from unconnected data points.
New osg::ArgumentParser and osg::ApplicationUsage classes for
convineiently and robustly parsing command line arguments and
report command line usage, environmental variables and
keyboard and mouse bindings used by applications. Running any
of the examples with -h or --help will report full details example
usage. Keyboard and Mouse bindings usage is now also available as
a HUD on all examples, simply press 'h' while the app is runing to
Two new classes, osg::ArgumentParser and osg::ApplicationUsage, have been introduced
to convineiently and robustly parse command line arguments and
report command line usage, environmental variables and keyboard and mouse bindings
used by applications. Running any of the examples with -h or --help will report
full details example usage. Keyboard and Mouse bindings usage is now also available as
a HUD on all examples, simply press 'h' while the app is running to
bring up help.
New database cache in the osgDB library.
A database cache in the osgDB library has been added, along with a clean up
of memory management in the OpenFlight loader, make development of
dynamic paging of databases easier and more robust.
Added support for early abort of rendering, useful for interactive
applications which occasional have rendering that takes that long
enough (i.e. several seconds) that end users may wish to abort
during the drawing.
Support for early abort of rendering has been added, which is useful for
interactive applications which occasionally have rendering that takes that long
enough (i.e.several seconds) that end users may wish to abort during the drawing.
Clean up of memory management in the OpenFlight loader.
There have also been many general API improvements and bug fixes, too many to enumerate,
but all go to solidify the quality of the scene graph and its accompanying libraries.
The combination of new features, robustness and scalability mark this release as a
significant step towards 1.0.
Various API clean ups and bug fixes.
24th January 2003 - OpenSceneGraph-0.9.3.tar.gz
@@ -395,7 +414,7 @@ OSG News (most significant items from ChangeLog)
far away!
24th February 2002 - osg-0.8.44.tar.gz
24th February 2002 - osg-0.8.44.tar.gzosg-
>>> Support added for Mac OSX, Cygwin and MinGW, and new TerraPage loader.

View File

@@ -81,7 +81,7 @@ library.</li>
<li>
src/osgProducer - The osgProducer library depends upon, you guessed it, Producer...</li>
<ul><i><a href="http://www.andesengineering.com/BlueMarbleViewer/producer_install.html">"http://www.andesengineering.com/BlueMarbleViewer/producer_install.html</a></i></ul>
<ul><i><a href="http://www.andesengineering.com/Producer">"http://www.andesengineering.com/Producer</a></i></ul>
</ul>
<hr>

View File

@@ -26,7 +26,7 @@ class OccluderEventHandler : public osgGA::GUIEventHandler
{
public:
OccluderEventHandler(osgUtil::SceneView* sceneview,osg::Group* rootnode):_sceneview(sceneview),_rootnode(rootnode) {}
OccluderEventHandler(osgProducer::Viewer* viewer):_viewer(viewer) {}
virtual bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&);
@@ -39,8 +39,10 @@ class OccluderEventHandler : public osgGA::GUIEventHandler
void endOccluder();
osg::Group* rootNode() { return dynamic_cast<osg::Group*>(_viewer->getSceneData()); }
osg::ref_ptr<osgUtil::SceneView> _sceneview;
osgProducer::Viewer* _viewer;
osg::ref_ptr<osg::Group> _rootnode;
osg::ref_ptr<osg::Group> _occluders;
osg::ref_ptr<osg::ConvexPlanarOccluder> _convexPlanarOccluder;
@@ -55,34 +57,20 @@ bool OccluderEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIAct
if (ea.getKey()=='a')
{
float x = ea.getX();
float y = ea.getY();
float x = ea.getXnormalized();
float y = ea.getYnormalized();
osg::Vec3 near_point,far_point;
if (!_sceneview->projectWindowXYIntoObject(x,ea.getYmax()-y,near_point,far_point))
osgUtil::IntersectVisitor::HitList hitList;
if (!_viewer->computeIntersections(x,y,hitList))
{
return true;
}
osg::ref_ptr<osg::LineSegment> lineSegment = new osg::LineSegment;
lineSegment->set(near_point,far_point);
osgUtil::IntersectVisitor iv;
iv.addLineSegment(lineSegment.get());
_rootnode->accept(iv);
if (iv.hits())
if (!hitList.empty())
{
osgUtil::IntersectVisitor::HitList& hitList = iv.getHitList(lineSegment.get());
if (!hitList.empty())
{
osgUtil::Hit& hit = hitList.front();
addPoint(hit.getWorldIntersectPoint());
}
osgUtil::Hit& hit = hitList.front();
addPoint(hit.getWorldIntersectPoint());
}
return true;
@@ -96,8 +84,9 @@ bool OccluderEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIAct
{
if (_occluders.valid())
{
std::cout<<"saving occluders to 'saved_occluders.osg'"<<std::endl;
osgDB::writeNodeFile(*_occluders,"saved_occluders.osg");
if (osgDB::writeNodeFile(*_occluders,"saved_occluders.osg"))
std::cout<<"saved occluders to 'saved_occluders.osg'"<<std::endl;
}
else
{
@@ -136,7 +125,7 @@ void OccluderEventHandler::endOccluder()
if (!_occluders.valid())
{
_occluders = new osg::Group;
_rootnode->addChild(_occluders.get());
if (rootNode()) rootNode()->addChild(_occluders.get());
}
_occluders->addChild(occluderNode);
@@ -297,6 +286,11 @@ int main( int argc, char **argv )
bool manuallyCreateOccluders = false;
while (arguments.read("-m")) { manuallyCreateOccluders = true; }
if (manuallyCreateOccluders)
{
viewer.getEventHandlerList().push_front(new OccluderEventHandler(&viewer));
}
// get details on keyboard and mouse bindings used by the viewer.
viewer.getUsage(*arguments.getApplicationUsage());
@@ -349,12 +343,6 @@ int main( int argc, char **argv )
// create the windows and run the threads.
viewer.realize();
if (manuallyCreateOccluders)
{
osgUtil::SceneView* sceneview = viewer.getSceneHandlerList()[0].get();
viewer.getEventHandlerList().push_front(new OccluderEventHandler(sceneview,rootnode.get()));
}
while( !viewer.done() )
{

View File

@@ -1208,6 +1208,8 @@ int32 trpgTexture::CalcTotalSize() const
return totSize;
}
default:
break;
};
// Figure out the total data size, including mipmaps if necessary
@@ -1342,6 +1344,8 @@ void trpgTexture::CalcMipLevelSizes()
case trpg_INTA8:
pixel_size = 2;
break;
default:
break;
}
levelOffset.clear();

View File

@@ -437,7 +437,7 @@ bool Viewer::computeNearFarPoints(float x,float y,unsigned int cameraNum,osg::Ve
float pixel_x,pixel_y;
if (computePixelCoords(x,y,cameraNum,pixel_x,pixel_y))
{
return scenehandler->projectWindowXYIntoObject(pixel_x,pixel_y,near_point,far_point);
return scenehandler->projectWindowXYIntoObject((int)(pixel_x+0.5f),(int)(pixel_y+0.5f),near_point,far_point);
}
return false;

View File

@@ -226,7 +226,7 @@ void ViewerEventHandler::StatsAndHelpDrawCallback::createHelpText()
osgText::Text* text = new osgText::Text;
text->setFont("fonts/arial.ttf");
text->setColor(colorDescription);
text->setFontSize(characterSize,characterSize);
text->setFontSize((unsigned int)characterSize,(unsigned int)characterSize);
text->setCharacterSize(characterSize);
text->setPosition(posDescription);
text->setMaximumWidth(maxWidthOfDisplayRegion);
@@ -252,7 +252,7 @@ void ViewerEventHandler::StatsAndHelpDrawCallback::createHelpText()
osgText::Text* text = new osgText::Text;
text->setFont("fonts/arial.ttf");
text->setColor(colorOption);
text->setFontSize(characterSize,characterSize);
text->setFontSize((unsigned int)characterSize,(unsigned int)characterSize);
text->setCharacterSize(characterSize);
text->setPosition(posOption);
text->setAlignment(osgText::Text::BASE_LINE);
@@ -279,7 +279,7 @@ void ViewerEventHandler::StatsAndHelpDrawCallback::createHelpText()
osgText::Text* text = new osgText::Text;
text->setFont("fonts/arial.ttf");
text->setColor(colorExplanation);
text->setFontSize(characterSize,characterSize);
text->setFontSize((unsigned int)characterSize,(unsigned int)characterSize);
text->setCharacterSize(characterSize);
text->setPosition(posExplanation);
text->setMaximumWidth(maxWidth);
@@ -613,7 +613,7 @@ void ViewerEventHandler::StatsAndHelpDrawCallback::createStatsText()
osgText::Text* text = new osgText::Text;
text->setFont("fonts/arial.ttf");
text->setColor(colorUpdate);
text->setFontSize(characterSize,characterSize);
text->setFontSize((unsigned int)characterSize,(unsigned int)characterSize);
text->setCharacterSize(characterSize);
text->setPosition(pos);
text->setAlignment(osgText::Text::BASE_LINE);
@@ -627,7 +627,7 @@ void ViewerEventHandler::StatsAndHelpDrawCallback::createStatsText()
_updateTimeText->setFont("fonts/arial.ttf");
_updateTimeText->setColor(colorUpdate);
_updateTimeText->setFontSize(characterSize,characterSize);
_updateTimeText->setFontSize((unsigned int)characterSize,(unsigned int)characterSize);
_updateTimeText->setCharacterSize(characterSize);
_updateTimeText->setPosition(pos);
_updateTimeText->setAlignment(osgText::Text::BASE_LINE);
@@ -650,7 +650,7 @@ void ViewerEventHandler::StatsAndHelpDrawCallback::createStatsText()
osgText::Text* cullLabel = new osgText::Text;
cullLabel->setFont("fonts/arial.ttf");
cullLabel->setColor(colorCull);
cullLabel->setFontSize(characterSize,characterSize);
cullLabel->setFontSize((unsigned int)characterSize,(unsigned int)characterSize);
cullLabel->setCharacterSize(characterSize);
cullLabel->setPosition(pos);
cullLabel->setAlignment(osgText::Text::BASE_LINE);
@@ -664,7 +664,7 @@ void ViewerEventHandler::StatsAndHelpDrawCallback::createStatsText()
cullField->setFont("fonts/arial.ttf");
cullField->setColor(colorCull);
cullField->setFontSize(characterSize,characterSize);
cullField->setFontSize((unsigned int)characterSize,(unsigned int)characterSize);
cullField->setCharacterSize(characterSize);
cullField->setPosition(pos);
cullField->setAlignment(osgText::Text::BASE_LINE);
@@ -680,7 +680,7 @@ void ViewerEventHandler::StatsAndHelpDrawCallback::createStatsText()
osgText::Text* drawLabel = new osgText::Text;
drawLabel->setFont("fonts/arial.ttf");
drawLabel->setColor(colorDraw);
drawLabel->setFontSize(characterSize,characterSize);
drawLabel->setFontSize((unsigned int)characterSize,(unsigned int)characterSize);
drawLabel->setCharacterSize(characterSize);
drawLabel->setPosition(pos);
drawLabel->setAlignment(osgText::Text::BASE_LINE);
@@ -694,7 +694,7 @@ void ViewerEventHandler::StatsAndHelpDrawCallback::createStatsText()
drawField->setFont("fonts/arial.ttf");
drawField->setColor(colorDraw);
drawField->setFontSize(characterSize,characterSize);
drawField->setFontSize((unsigned int)characterSize,(unsigned int)characterSize);
drawField->setCharacterSize(characterSize);
drawField->setPosition(pos);
drawField->setAlignment(osgText::Text::BASE_LINE);