Added setValue method and osg::Image setup to osg::TransferFunction1D, and setup

of TransferFunction1D into osgterrain example.
This commit is contained in:
Robert Osfield
2007-04-02 13:06:59 +00:00
parent 826be748e8
commit 43c24da12d
3 changed files with 25 additions and 1 deletions

View File

@@ -164,6 +164,28 @@ int main(int argc, char** argv)
}
}
float minValue, maxValue;
if (arguments.read("--tf",minValue, maxValue))
{
readParameter = true;
osg::ref_ptr<osg::TransferFunction1D> tf = new osg::TransferFunction1D;
tf->setInputRange(minValue, maxValue);
tf->allocate(6);
tf->setValue(0, osg::Vec4(1.0,1.0,1.0,1.0));
tf->setValue(1, osg::Vec4(1.0,0.0,1.0,1.0));
tf->setValue(2, osg::Vec4(1.0,0.0,0.0,1.0));
tf->setValue(3, osg::Vec4(1.0,1.0,0.0,1.0));
tf->setValue(4, osg::Vec4(0.0,1.0,1.0,1.0));
tf->setValue(5, osg::Vec4(0.0,1.0,0.0,1.0));
osg::notify(osg::NOTICE)<<"--tf "<<minValue<<" "<<maxValue<<std::endl;
terrain->setColorTransferFunction(tf.get());
}
} while (readParameter);

View File

@@ -63,7 +63,7 @@ class OSG_EXPORT TransferFunction1D : public osg::TransferFunction
unsigned int getNumberCellsX() const { return _colors.size(); }
osg::Vec4& getValue(unsigned int i) { return _colors[i]; }
void setValue(unsigned int i, const osg::Vec4& color) { _colors[i] = color; if (_image.valid()) _image->dirty(); }
const osg::Vec4& getValue(unsigned int i) const { return _colors[i]; }
protected:

View File

@@ -46,6 +46,8 @@ void TransferFunction1D::setInputRange(float minimum, float maximum)
void TransferFunction1D::allocate(unsigned int numX)
{
_colors.resize(numX);
_image = new osg::Image;
_image->setImage(numX,1,1,GL_RGBA, GL_RGBA, GL_FLOAT, (unsigned char*)&_colors[0], osg::Image::NO_DELETE);
}
void TransferFunction1D::clear(const osg::Vec4& color)