Further work on GLSL support in .ive

This commit is contained in:
Robert Osfield
2005-05-11 11:42:09 +00:00
parent fb34b22e34
commit 8d31e75364
8 changed files with 121 additions and 7 deletions

View File

@@ -90,10 +90,11 @@ void StateSet::write(DataOutputStream* out){
if ( out->getVersion() >= VERSION_0010 )
{
// Write stateset attributes, this could for instance be alphafunctions, materials, etc.
// Write stateset uniforms
StateSet::UniformList ul = getUniformList();
out->writeInt(ul.size());
for(StateSet::UniformList::iterator uitr=ul.begin(); uitr!=ul.end(); ++uitr){
for(StateSet::UniformList::iterator uitr=ul.begin(); uitr!=ul.end(); ++uitr)
{
out->writeUniform(uitr->second.first.get());
out->writeInt(uitr->second.second);
}
@@ -165,9 +166,11 @@ void StateSet::read(DataInputStream* in){
// Read texture attributes.
nUnits = in->readInt();
for(unit=0;unit<nUnits;unit++){
for(unit=0;unit<nUnits;unit++)
{
size = in->readInt();
for(i=0;i<size;i++){
for(i=0;i<size;i++)
{
osg::StateAttribute* attribute = in->readStateAttribute();
setTextureAttribute(unit, attribute, (osg::StateAttribute::OverrideValue)in->readInt());
}
@@ -177,7 +180,8 @@ void StateSet::read(DataInputStream* in){
{
// Read uniforms
size = in->readInt();
for(i=0;i<size;i++){
for(i=0;i<size;i++)
{
osg::Uniform* uniform = in->readUniform();
addUniform(uniform, (osg::StateAttribute::OverrideValue)in->readInt());
}