|
发表于 2012-8-24 09:51:05
|
显示全部楼层
楼上说的对,你可以逐行的添加断点进行调试,估计是在nmax=dixing->getNumDrawables();这句崩溃的,因为你读进来的数据节点model本来就不是Geode类型,所以在dixing=model->asGeode()的时候,dixing的值是NULL,然后你再接着调用dixing->getNumDrawables();就崩溃了。
你可以使用节点访问器来查询一个节点中Drawable的个数。
例如:
class DrawableNumVisitor :
public osg::NodeVisitor
{
public:
DrawableNumVisitor() :
totalDrawableNum(0),
NodeVisitor(NodeVisitor::TRAVERSE_ALL_CHILDREN) {}
virtual ~DrawableNumVisitor() {}
virtual void apply(osg::Geode &node){
totalDrawableNum += node.getNumDrawables();
}
protected:
int totalDrawableNum;
};
DrawableNumVisitor visitor;
model.accept(visitor); |
|