Updated NEWS

Added support for inline/nonlining of texture cube maps.
This commit is contained in:
Robert Osfield
2003-10-02 14:11:57 +00:00
parent 82143f7553
commit dec5bb1f2a
3 changed files with 89 additions and 57 deletions

View File

@@ -1,7 +1,7 @@
OSG News (most significant items from ChangeLog)
================================================
16th September 2003 - OpenSceneGraph-0.9.6
2nd October 2003 - OpenSceneGraph-0.9.6-2
>>> osgFX Special Effects nodekit (for bumping mapping & cartoon effects etc), support for double Matrix traversals,
>>> improved build support, thread safety and robustness.
@@ -30,6 +30,9 @@ OSG News (most significant items from ChangeLog)
on performance since camera operations are only done a small number of
times per frame.
osg::Quat now supports doubles by default, but also allows users to select
float version osg::Quat simply by changing the osg::Quat::value_type typedef.
Work has been on OpenThreads and OpenProducer, in particular to improve
thread safety and robustness on the Win32 platform. Reported crashes
on exit from osgProducer::Viewer based apps, and freezes during runtime
@@ -57,6 +60,9 @@ OSG News (most significant items from ChangeLog)
mean that the .ive format has has changed and is no longer compatible
with previous version of .ive. It is recommend that one recreates .ive
for the original source via osgconv or similar to ensure consistency.
A JPEG2000 image plugin has added, written by Michael Gronager. The new jp2
plugin uses the japser open source project to read and write JPEG2000 files.
A scalar bar, and sphere segment helper classes have been added to osgSim,
the new osgscalarbar and osgspheresegment examples demonstrate how to use
@@ -72,9 +78,15 @@ OSG News (most significant items from ChangeLog)
set OSG_GL_EXTENSION_DISABLE =
"ATI:GL_SGIS_generate_mipmap;Sun:GL_EXT_texture_filter_anisotropic:"
New examples include:
osgforest - an example which demonstrates simple techniques for creating forests
osgfxbrowser - an example which demonstrates the various osgFX Effects available
osgscalabar - an example of how to set up the osgSim::ScalarBar.
osgspheresegment - an example of how to set up the osgSim::SphereSegement
osgpagelod - a very simply test program for setting up osg::PagedLOD/osgDB::DatabasePager
23rd July 2003 - OpenSceneGraph-0.9.5
>>> Support added for OpenGL2.0 shaders, native multi-threaded Database paging,

View File

@@ -40,31 +40,38 @@ void TextureCubeMap::write(DataOutputStream* out){
// Write number of mipmap levels
out->writeInt(getNumMipmapLevels());
// Write images if any
out->writeBool(getImage(osg::TextureCubeMap::POSITIVE_X)!=0);
if(getImage(osg::TextureCubeMap::POSITIVE_X))
((ive::Image*)(getImage(osg::TextureCubeMap::POSITIVE_X)))->write(out);
// Should we include images date in stream
bool includeImg = out->getIncludeImageData();
out->writeBool(includeImg);
out->writeBool(getImage(osg::TextureCubeMap::NEGATIVE_X)!=0);
if(getImage(osg::TextureCubeMap::NEGATIVE_X))
((ive::Image*)(getImage(osg::TextureCubeMap::NEGATIVE_X)))->write(out);
writeImage(out,includeImg,getImage(osg::TextureCubeMap::POSITIVE_X));
writeImage(out,includeImg,getImage(osg::TextureCubeMap::NEGATIVE_X));
writeImage(out,includeImg,getImage(osg::TextureCubeMap::POSITIVE_Y));
writeImage(out,includeImg,getImage(osg::TextureCubeMap::NEGATIVE_Y));
writeImage(out,includeImg,getImage(osg::TextureCubeMap::POSITIVE_Z));
writeImage(out,includeImg,getImage(osg::TextureCubeMap::NEGATIVE_Z));
out->writeBool(getImage(osg::TextureCubeMap::POSITIVE_Y)!=0);
if(getImage(osg::TextureCubeMap::POSITIVE_Y))
((ive::Image*)(getImage(osg::TextureCubeMap::POSITIVE_Y)))->write(out);
}
out->writeBool(getImage(osg::TextureCubeMap::NEGATIVE_Y)!=0);
if(getImage(osg::TextureCubeMap::NEGATIVE_Y))
((ive::Image*)(getImage(osg::TextureCubeMap::NEGATIVE_Y)))->write(out);
out->writeBool(getImage(osg::TextureCubeMap::POSITIVE_Z)!=0);
if(getImage(osg::TextureCubeMap::POSITIVE_Z))
((ive::Image*)(getImage(osg::TextureCubeMap::POSITIVE_Z)))->write(out);
out->writeBool(getImage(osg::TextureCubeMap::NEGATIVE_Z)!=0);
if(getImage(osg::TextureCubeMap::NEGATIVE_Z))
((ive::Image*)(getImage(osg::TextureCubeMap::NEGATIVE_Z)))->write(out);
void TextureCubeMap::writeImage(DataOutputStream* out,bool includeImg,osg::Image* image)
{
if(includeImg)
{
// Write images if any
out->writeBool(image!=0);
if(image)
((ive::Image*)(image))->write(out);
}
else
{
if (image && !(image->getFileName().empty())){
out->writeString(image->getFileName());
}
else{
out->writeString("");
}
}
}
void TextureCubeMap::read(DataInputStream* in)
@@ -91,40 +98,43 @@ void TextureCubeMap::read(DataInputStream* in)
// Read number of mipmap levels
setNumMipmapLevels((unsigned int)in->readInt());
// Read images if any
if(in->readBool()){
osg::Image* image = new osg::Image();
((ive::Image*)(image))->read(in);
setImage(osg::TextureCubeMap::POSITIVE_X, image);
}
if(in->readBool()){
osg::Image* image = new osg::Image();
((ive::Image*)(image))->read(in);
setImage(osg::TextureCubeMap::NEGATIVE_X, image);
}
if(in->readBool()){
osg::Image* image = new osg::Image();
((ive::Image*)(image))->read(in);
setImage(osg::TextureCubeMap::POSITIVE_Y, image);
}
if(in->readBool()){
osg::Image* image = new osg::Image();
((ive::Image*)(image))->read(in);
setImage(osg::TextureCubeMap::NEGATIVE_Y, image);
}
if(in->readBool()){
osg::Image* image = new osg::Image();
((ive::Image*)(image))->read(in);
setImage(osg::TextureCubeMap::POSITIVE_Z, image);
}
if(in->readBool()){
osg::Image* image = new osg::Image();
((ive::Image*)(image))->read(in);
setImage(osg::TextureCubeMap::NEGATIVE_Z, image);
}
// Should we read image data from stream
bool includeImg = in->readBool();
setImage(osg::TextureCubeMap::POSITIVE_X,readImage(in, includeImg));
setImage(osg::TextureCubeMap::NEGATIVE_X,readImage(in, includeImg));
setImage(osg::TextureCubeMap::POSITIVE_Y,readImage(in, includeImg));
setImage(osg::TextureCubeMap::NEGATIVE_Y,readImage(in, includeImg));
setImage(osg::TextureCubeMap::POSITIVE_Z,readImage(in, includeImg));
setImage(osg::TextureCubeMap::NEGATIVE_Z,readImage(in, includeImg));
}
else{
throw Exception("TextureCubeMap::read(): Expected TextureCubeMap identification.");
}
}
osg::Image* TextureCubeMap::readImage(DataInputStream* in, bool includeImg)
{
if(includeImg)
{
// Read image data from stream
if(in->readBool())
{
osg::Image* image = new osg::Image();
((ive::Image*)image)->read(in);
return image;
}
}
else
{
// Only read image name from stream.
std::string filename = in->readString();
if(filename.compare("")!=0)
{
osg::Image* image = in->readImage(filename);
return image;
}
}
return 0;
}

View File

@@ -4,11 +4,21 @@
#include <osg/TextureCubeMap>
#include "ReadWrite.h"
namespace ive{
class TextureCubeMap : public osg::TextureCubeMap, public ReadWrite {
namespace ive
{
class TextureCubeMap : public osg::TextureCubeMap, public ReadWrite
{
public:
void write(DataOutputStream* out);
void writeImage(DataOutputStream* out,bool includeImg,osg::Image* image);
void read(DataInputStream* in);
osg::Image* readImage(DataInputStream* in, bool includeImg);
};
}