|
当把多个OSGVolume体渲染对象加到一个Group中,然后以ive文件写出后,再从ive文件读入这个Group节点的时候返回值为空。(当只有一个体渲染对象的时候不会有问题)
产生该问题的原因是OSG读取体模型渲染技术的部分有问题。
原代码如下:
- void VolumeTile::writeVolumeTechnique(DataOutputStream* out, osgVolume::VolumeTechnique* technique)
- {
- if (dynamic_cast<osgVolume::RayTracedTechnique*>(technique))
- {
- out->writeBool(true);
- out->writeInt(IVEVOLUMERAYTRACEDTECHNIQUE);
- }
- if (dynamic_cast<osgVolume::FixedFunctionTechnique*>(technique))
- {
- out->writeBool(true);
- out->writeInt(IVEVOLUMEFIXEDPIPELINETECHNIQUE);
- }
- else
- {
- out->writeBool(false);
- }
- }
复制代码 粗体部分的代码有问题。应该是
else if (dynamic_cast<osgVolume::FixedFunctionTechnique*>(technique))
体渲染我们一般采用的都是osgVolume::RayTracedTechnique技术。所以,按原来的代码来走的话会写出三个数值。而读取的时候只读两个数值。
当你只有一个体模型的时候,反正这是模型的最后两个数据,多了一个也没有关系,程序也不读。但是要是有多个模型的话,从第二个模型开始所有的数据都会乱掉的。 |
|