"I was experiencing hard crashes of my application when using PBO's on
machines that don't support PBO's. I think osg incorrectly checks if
PBO's are supported.
I added a new method to the BufferObject::Extensions class which
returns if the "GL_ARB_pixel_buffer_object" string is supported. This
fixes the problem on my end. Machines without PBO support will
continue to work and machines with PBO support will still be able to
use it."
( in OF external references) after the OF file is loaded. The change do
conditional
execution of already existing code.
I use this for optimized preprocessing of large databases what can not
be loaded
in one pass because of memory limits."
in incorrect texture assignment. Solution was to a compareTextureObjects() test to the Texture*::compare(..) method that
the osgUtil::Optimizer::StateSetVisitor uses to determine uniqueness.
parent file is so old that it doesn't support Light Point palettes or Shader
palettes, then the parent file is not allowed to override those palettes in
the child."
osgPlugins\pfb\ConvertFromPerformer.cpp
Added support for
PFSTATE_ALPHAFUNC
PFSTATE_ALPHAREF
Improved handling of
PFTR_NO_OCCLUDE
I have tested this with WIN32 performer 3.1 and 3.2.2
and linux OpenGL Performer 3.1.1"
------------------------------------------------
Fixed bug osgDB::Registry::Registry::read(const ReadFunctor& readFunctor) relating to
the handling of failed loads with the ReadResult::_message value being lost, this changes
ensure that the original ReadResult from the plugin, with message intact, is returned correctly.
"I've attached fixes to DataSet that should fix the problems that Maya was seeing yesterday. The issue was that the new interpolation code I submitted didn't use the SourceData's georef, it was assuming that the GDALDataSet had a proper geo-ref. I've made the getInterpolatedValue method a member of SourceData and now it uses the georef the SourceData's georef.
I also forward declared the GDALRasterBand class in the DataSet header."
Note that firstly it always returns the positive real quaternion (positive w)
Note also that it will sometimes slightly differ from the results of the other methods because it assumes that the input matrix really is a rotation matrix - if it isn't, e.g. because of rounding error, then the output quaternion will be very slightly different. For example, the test matrix
0 1 0 0
1 0 0 0
0 0 0.999999 0
0 0 0 1
will return 0.707107 0.707107 0.0005033 0.0005033
whereas the previous methods return 0.707107 0.707107 0.0 0.0
However, since quaternions are rotations, the meaning of how to convert a matrix that isn't a rotation is a little unclear..."
setFactorAndUnitMultipliersUsingBestGuessForDriver() static methods to
osg::PolygonOffset to help implement workarounds for lack of portablity of
settings between different hardware.
"I found some artifacts on some models and traced it back to the
external palette override feature. There are some changes in the
layout of the external record the loader have to take into
consideration.
The other fix is to remove the OF pools from the user data of the
external ProxyNode when it is no longer needed."
"There was a typo in "int setNotifyOffset()", appear to be a getter =>
"int getNotifyOffset()".
Then I have added a switch to create GDALTermProgress only when the
current notify level + local offset permit message display. In fact, if
the offset is set to 0 and the notify level is at the default, DataSet
is quiet but for the GDALTermProgress. That is quite disturbing since
you think the progress is related to the complete processing but it is
actually only related to the GDAL Warp."
"If a texture is used that is not a multiple of four, and compression
was requested through the texture's internal format, the texture's
internal format reverts to a non-compressed type and a NOTICE is given.
At present, compressed textures must have a multiple of four in each
dimension."
"Attached is some fixes for Image::readImageFromCurrentTexture. It was
failing when used with a new Image object (some of the fields were
not set before they were used, and some were set to the wrong values).
A new optional parameter was added to give the desired data type, which
defaults to GL_UNSIGNED_BYTE, so programs should only need a recompile
to work properly."
in orthographic projection. Performing the rotation before the scaling
fixed the problem. I've attached Text.cpp with the fix."
From Robert Osfield, in keeping with Vivek's change moved the auto rotate to screen befor the scale as well.
textures. Near the top of the function that implements texture
subloading, osg::Texture::applyTexImage2D_subload(), the local variable
compressed_image examines the _image's_ pixel format to see if it is
compressed. However, further on, in calls to getCompressedSize() the
_texture's_ pixel format is used. In my application's Texture2D class,
I use osg::Texture::USE_ARB_COMPRESSION to
osg::Texture2D::setInternalFormatMode(), which causes the internal format
to become one of the generic ARB_COMPRESSED types, which do not have a
specific size. Thus the recent warning message added to
osg::Texture::getCompressedSize() is triggered. The correct behavior is
to use the format mode from the Image class instead of the Texture class
within the subload implementation, and then the size is calculated
correctly."
based on the internal format. There is similar code in the Texture class
but it does not account for the ARB types. I modified the Texture class
implementation to show a warning when an incomplete internal format is
used to calculate the image size."
_TYPES_H_. types.h in the directx plugin defines the same include
guard. I've renamed the guard name in this file to _DX_TYPES_H_. Now
the plugin compile in mingw too."
"Previously, the new OpenFlight plugin only allowed ext ref models to use
their own palettes. With this change, parent models can override child model
palettes with the parent palettes.
These changes are made against very current CVS (just updated about 1/2 hour
ago, eliminated conflicts, and retested before this posting).
To regurgitate what I did:
A new class, ParentPools (public osg::Referenced), is created when an ext
ref record is parsed, and it is populated with any parent model pools that
should override the child model pools (according to bits in the ext ref
record). The ParentPools object is then set as UserData on the ProxyNode
corresponding to the ext ref.
When the ReadExternalsVisitor hits the ProxyNode, it takes its UserData and
sets it as UserData in the Options parameter to the osgDB::ReadNode call,
which then read the ext ref model. In the course of parsing the Options
string, ReaderWriterFLT also looks at the Options UserData and sets the
parent pools in the Document class accordingly.
When palette records are encountered while loading a file, they are ignored
if the corresponding pool was set by the parent.
Thanks to Brede for consulting with me on the implementation.
"
"attached you'll find some modifications to Producer, osgGA and
osgProducer to enable Mac OS X support for
+ scrollwheels,
+ mightymouse-srollballs
+ new tracking-pads with scroll feature
+ tablet-support (pressure, proximity and pointertype) (Wacom only tested)
I think there was a bug in the windows-implementation of scroll-wheel
support (wrong order of ScrollingMotion-enum, casting problem) which is
fixed now.
The scrollwheel-code is a bit klunky across platforms, some devices on
OS X can report an absolute delta in pixel-coordinates not only the
direction, so for now there is scrollingMotion (which describes the
direction) and scrolldeltax and scrolldeltay. I decided to leave the
scrollingmotion-stuff to not break old code relying on this."
that users can assign to it without it being overriden. If none is
assigned externally it now uses a StateSet associated wit the Font assigned
to the Text.
"The attached file corrects two small typos in MultiSwitch.cpp. The
local "values" reference and the "_values" member attribute are of
different types but both are vectors so the size() operator happily
compiles. A renaming of _values to _masks or similar may be a more
future proof solution but the submission only removes the underscore
in two places.
The switch_1701.flt model part of the Creator gallery revealed this bug."
through the osgDB::readImageFile and osgDB::writeImageFile functions.
This is useful for storing compressed textures on disk for rapid playback
for animations."
From Robert Osfield, remapped Paul Martz's changes to Pools.h and PaletteRecords.cpp w.r.t texturePatternIndex being a in16, and converted a char* string to a std::string.
email comments from Andew Sampson,
"I've contacted Terrex, and obtained the 2.2 version
of their trpage library. The library included a
fork of OSG 0.9.8's txp plugin, modified to load 2.1+
txp DBs.
I've done the work of incorporating the changes made
to OSG's txp plugin since 0.9.8 into Terrex's fork.
The forked version is now up-to-date with the changes
made to OSG 0.9.9 and 1.0.
Terrex made a lot of changes (especially differences
in whitespace), so the diff between the forked version
and OSG 1.0's txp plugin is yucky. I did my best, but
keep in mind that this is the result of a 4-way merge
(kinda... terrex-0.9.8, stock-0.9.8, stock-0.9.9,
stock-1.0).
I really want to see this forked version merged back
into the main OSG branch. The new features offered by
this version of the plugin (2.1+ support, variable
LOD support, bug fixes) are worth the trouble."
--
Don Tidrow then took this code and added his work.
--
Robert Osfield then fixed all the warnings that abound in the trpage code base.
There are some group codes (i.e. "62") which are interpreted as
dxfDataType::SHORT. That's right because the dxf-specification defines
"16 bit integer" as the type for the corresponding value.
But readerBase::readGroup() calls readValue(std::ifstream&, unsigned
short). I changed readValue(std::ifstream&, unsigned short) to
readValue(std::ifstream&, short). I found no group code at the dxf-specs
which needs a "16 bit unsigned integer" value. So the
readValue(std::ifstream&, unsigned short) function is obsolete - right?
changes to this plugin that aren't in current CVS yet -- this change is
based on current CVS, not our changed files.)
This changes how shader palette records are parsed to support GLSL per the
OpenFlight 16.1 spec. Existing functionality for 16.0 files is preserved.
The change to Document.h simply adds an enum for VERSION_16_1."
dded GeospatialExtents bounding box class which used doubles
in place of the original usage of osg::BoundingBox.
Added path for computing interpolation elevation data being read from GDAL.
when the binding mode changes, thereby avoiding uncessary calls to dirtyDisplayList.
Note, from Robert Osfield, moved bodies of set*Binding() into Geometry.cpp to avoid
clutter in the header.
"- Replaced some member attributes with local variables in Face record.
- Multitexture support in Vertex class.
- Renamed VertexList to VertexListRecord (VertexList is now a Vertex array)
- new Mesh (with reserved field at offset 12, thanks to Paul Martz)
- new LocalVertexPool
- new MeshPrimitive
- Use ProxyNode for externals.
- Local cache for externals"
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.