本文整理汇总了C++中BoxVolume::transform方法的典型用法代码示例。如果您正苦于以下问题:C++ BoxVolume::transform方法的具体用法?C++ BoxVolume::transform怎么用?C++ BoxVolume::transform使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BoxVolume
的用法示例。
在下文中一共展示了BoxVolume::transform方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getWorldVolume
void Node::getWorldVolume(BoxVolume &result)
{
Matrix m;
if(getParent() != NULL)
{
getParent()->getToWorld(m);
}
else
{
m.setIdentity();
}
updateVolume();
result = getVolume();
result.transform(m);
}
示例2: isVisible
// test a single node
bool RenderPartition::isVisible(Node *pNode)
{
if(getFrustumCulling() == false)
return true;
if(_oDrawEnv.getStatCollector() != NULL)
{
_oDrawEnv.getStatCollector()->getElem(statCullTestedNodes)->inc();
}
// _oDrawEnv.getRTAction()->getStatistics()->getElem(statCullTestedNodes)->inc();
if(pNode->getVolume().isInfinite() == true)
return true;
BoxVolume vol;
pNode->updateVolume();
vol = pNode->getVolume();
vol.transform(topMatrix());
if(_oFrustum.intersect(vol))
{
// fprintf(stderr,"%p: node 0x%p vis\n", Thread::getCurrent(), node);
return true;
}
if(_oDrawEnv.getStatCollector() != NULL)
{
_oDrawEnv.getStatCollector()->getElem(statCulledNodes)->inc();
}
// _oDrawEnv.getRTAction()->getStatistics()->getElem(statCulledNodes)->inc();
// fprintf(stderr,"%p: node 0x%p invis\n", Thread::getCurrent(), node);
// _frustum.dump();
return false;
}
示例3: pushVisibility
// visibility levels
bool RenderPartition::pushVisibility(Node * const pNode)
{
if(getFrustumCulling() == false)
return true;
FrustumVolume::PlaneSet inplanes = _visibilityStack.back();
if(inplanes == FrustumVolume::P_ALL)
{
_visibilityStack.push_back(inplanes);
return true;
}
Color3f col;
bool result = true;
FrustumVolume frustum = _oFrustum;
BoxVolume vol = pNode->getVolume();
// don't mess with infinite volumes
if(vol.isInfinite() == false)
{
pNode->updateVolume();
vol = pNode->getVolume();
#if 1
vol.transform(topMatrix());
#else
// not quite working
Matrix m = topMatrix();
m.invert();
frustum.transform(m);
#endif
}
if(_oDrawEnv.getStatCollector() != NULL)
{
_oDrawEnv.getStatCollector()->getElem(statCullTestedNodes)->inc();
}
if(intersect(frustum, vol, inplanes) == false)
{
result = false;
col.setValuesRGB(1,0,0);
if(_oDrawEnv.getStatCollector() != NULL)
{
_oDrawEnv.getStatCollector()->getElem(statCulledNodes)->inc();
}
}
else
{
if(inplanes == FrustumVolume::P_ALL)
{
col.setValuesRGB(0,1,0);
}
else
{
col.setValuesRGB(0,0,1);
}
}
if(getVolumeDrawing())
{
dropVolume(this, pNode, col);
}
_visibilityStack.push_back(inplanes);
return result;
}