osgVolume.ImageLayer
是OpenSceneGraph的一个类,用于表示一个image layer,也就是体数据的彩色贴图。一个 osgVolume.ImageLayer
实例表示着 osgVolume.MultiSlice
对象中的一个层次。
osgVolume.ImageLayer
的构造函数如下:
ImageLayer(float depth, osg::Image* image);
构造函数需要两个参数:
depth
:图层的深度,是一个浮点数。image
:一个 osg::Image
实例,表示图层的图片。getOrCreateStateSet()
获取或创建 osg::StateSet
对象。这个对象可以设置渲染状态、材质等等。
osg::StateSet* getOrCreateStateSet();
setBlendFunction()
设置图层的混合函数。
void setBlendFunction(osg::BlendFunc::BlendFuncMode srcRGB, osg::BlendFunc::BlendFuncMode dstRGB,
osg::BlendFunc::BlendFuncMode srcAlpha, osg::BlendFunc::BlendFuncMode dstAlpha);
参数:
srcRGB
:RGB源混合因子。dstRGB
:RGB目标混合因子。srcAlpha
:Alpha源混合因子。dstAlpha
:Alpha目标混合因子。setDepthFunction()
设置图层在深度缓冲中的作用。
void setDepthFunction(osg::Depth::Function fun);
参数:
fun
: osg::Depth::Function
值,表示深度测试的函数。setDepthTest()
设置图层是否进行深度测试。
void setDepthTest(bool enable);
参数:
enable
:true
表示开启深度测试,false
表示关闭深度测试。getDepthTest()
获取图层是否进行深度测试。
bool getDepthTest() const;
返回值:
true
表示正在进行深度测试,false
表示关闭了深度测试。setColor()
设置图层颜色。
void setColor(const osg::Vec4& color);
参数:
color
:osg::Vec4
实例,表示颜色。getColor()
获取图层颜色。
const osg::Vec4& getColor() const;
返回值:
osg::Vec4
实例,表示颜色。osgVolume::MultiSlice* multiSlice = new osgVolume::MultiSlice;
multiSlice->setTextureSize(512, 512);
multiSlice->setBlendTextureSize(512, 512);
osg::ref_ptr<osg::Image> image = osgDB::readImageFile("texture.jpg");
osgVolume::ImageLayer* layer = new osgVolume::ImageLayer(0.0f, image.get());
layer->setColor(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
layer->setDepthFunction(osg::Depth::LEQUAL);
multiSlice->addImageLayer(layer);