diff --git a/NEWS b/NEWS index 013c97050..03864ddf1 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,50 @@ OSG News (most significant items from ChangeLog) ================================================ + +14th December 2001 - osg-0.8.43.tar.gz + + >>> Support for TrueType text, Stereo out of the box, and much more. + + Since the last release the OSG has moved to CVS based developments so + many users will have seen gradual increments in functionality and changes + to the API. Whereas a the leap from 0.8.42 to 0.8.43 is actually quite + significant is likely to require code changes as several significant parts + of the API have evolved to a more mature state. + + The most significant new functionality is the addition of the osgText + library which provides support for true type font rendering, as textured, + polygonal, pixmap, bitmap and 3D fonts. + + An new osg::Matrix class has been implemented which cleans its interface. + Also all angular paramters are now based on radians rather than degrees + as before (and as in Performer), this has been done to be more consistent + with the basic trignometric functions and standard maths conventions. + + Scene graph optimization has been added which can boost performance + on some database by as much as an order of magnititude, this is + particularily noticable in .flt based databases. Display list performance + has also been boosted on NVidia based machines thanks to changing the + compilation and execution of display list into two seperate operations. + + App callbacks are now supported on all Nodes, and there now a proper + app traversal which can be used to animate the scene. + + Stereo support has been added into the osgUtil::SceneView which allows + quad buffered/anaglyphic stereo to enabled easily for almost all OSG + applications without code modifications - simple set environmental + variable or pass in appropriate arguments and your app will render in + stereo! + + src/Demos/osgcluster has been added to demonstrate how easy it is + to set up a graphics cluster across a standard networked PC's. + + There have been many minor code changes to fix bugs, bottlenecks or + hinderances to extensibility have been addressed, there are too many + to list, but it does represent a significant step towards API maturity + and a beta release which is now not far away. + + 9th August 2001 - osg-0.8.42.tar.gz >>> New osgWX library for integration of OSG with wxWindows apps. diff --git a/include/osg/GeoSet b/include/osg/GeoSet index d551d6e60..4d71e0570 100644 --- a/include/osg/GeoSet +++ b/include/osg/GeoSet @@ -276,7 +276,7 @@ class SG_EXPORT GeoSet : public Drawable /** get the interleaved index array. */ inline const IndexPointer& getInterleavedIndices() const { return _iaindex; } /** get the interleaved array storage format. */ - inline const InterleaveArrayType getInterleavedFromat() const { return _iaformat; } + inline const InterleaveArrayType getInterleavedFormat() const { return _iaformat; } /** set the interleaved arrays of the geoset.*/ void setInterleavedArray( const InterleaveArrayType format, float *ia ); diff --git a/src/osgDB/FieldReaderIterator.cpp b/src/osgDB/FieldReaderIterator.cpp index de39cd4cd..bffaec8b3 100644 --- a/src/osgDB/FieldReaderIterator.cpp +++ b/src/osgDB/FieldReaderIterator.cpp @@ -296,6 +296,7 @@ bool FieldReaderIterator::matchSequence(const char* str) { if (str==NULL) return false; if (*str==0) return false; + int fieldCount = 0; const char* end = str; while((*end)!=0 && (*end)==' ') ++end; @@ -333,6 +334,7 @@ bool FieldReaderIterator::matchSequence(const char* str) if (!field(fieldCount).isQuotedString()) return false; break; } + case('w') : default :// expecting an word { if (!field(fieldCount).isWord()) return false; diff --git a/src/osgPlugins/osg/GeoSet.cpp b/src/osgPlugins/osg/GeoSet.cpp index dabfd4290..ba29ac3b7 100644 --- a/src/osgPlugins/osg/GeoSet.cpp +++ b/src/osgPlugins/osg/GeoSet.cpp @@ -480,8 +480,8 @@ bool GeoSet_readLocalData(Object& obj, Input& fr) fieldAdvanced = true; } - if (matchFirst=fr.matchSequence("InterleavedArray %s {") || - fr.matchSequence("InterleavedArray %s %i {")) + if ((matchFirst=fr.matchSequence("InterleavedArray %w {")) || + fr.matchSequence("InterleavedArray %w %i {")) { // set up coordinates. @@ -515,7 +515,7 @@ bool GeoSet_readLocalData(Object& obj, Input& fr) } else { - fr[3].getInt(capacity); + fr[2].getInt(capacity); fr += 4; } @@ -530,7 +530,7 @@ bool GeoSet_readLocalData(Object& obj, Input& fr) // now read the data rows between the {}. const char* rowComp = GeoSet_getInterleavedRowComposition(iaType); int rowLength = GeoSet_getInterleavedRowLength(iaType); - + int size = 0; unsigned char* dataList = new unsigned char[capacity*rowLength]; @@ -544,11 +544,10 @@ bool GeoSet_readLocalData(Object& obj, Input& fr) unsigned char* itrRowData = rowData; const char* itrRowComp = rowComp; int rn = 0; - while (*itrRowComp!=0) + while (*itrRowComp!=0 && !fr.eof() && fr[0].getNoNestedBrackets()>entry) { if (*itrRowComp=='f') { - if (!fr[rn].getFloat(floatData)) break; *(float*)itrRowData = floatData; itrRowData += 4; @@ -559,6 +558,7 @@ bool GeoSet_readLocalData(Object& obj, Input& fr) *itrRowData = (unsigned char)intData; itrRowData += 1; } + ++itrRowComp; ++rn; } if (*itrRowComp==0) @@ -579,10 +579,12 @@ bool GeoSet_readLocalData(Object& obj, Input& fr) } else { - ++fr; + if (!fr.eof() && fr[0].getNoNestedBrackets()>entry) ++fr; } } + delete [] rowData; + interleavedArray = (float*)dataList; } @@ -829,10 +831,10 @@ bool GeoSet_writeLocalData(const Object& obj, Output& fw) if (geoset.getInterleavedArray()) { // write out the interleaved arrays. - const char* rowComp = GeoSet_getInterleavedRowComposition(geoset.getInterleavedFromat()); + const char* rowComp = GeoSet_getInterleavedRowComposition(geoset.getInterleavedFormat()); fw.indent() << "InterleavedArray "; - switch(geoset.getInterleavedFromat()) + switch(geoset.getInterleavedFormat()) { case(GeoSet::IA_OFF): fw << "IA_OFF"; break; case(GeoSet::IA_V2F): fw << "IA_V2F"; break;