本文整理汇总了C++中AABBox::toProjectionMatrix方法的典型用法代码示例。如果您正苦于以下问题:C++ AABBox::toProjectionMatrix方法的具体用法?C++ AABBox::toProjectionMatrix怎么用?C++ AABBox::toProjectionMatrix使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AABBox
的用法示例。
在下文中一共展示了AABBox::toProjectionMatrix方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateShadowCasterReceiverBox
void FrustumShadowData::updateShadowCasterReceiverBox(const AABBox<float> &shadowCasterReceiverBox, bool forceUpdateAllShadowMap)
{
if(areIdenticalAABBox(shadowCasterReceiverBox, this->shadowCasterReceiverBox) && !forceUpdateAllShadowMap)
{
this->shadowCasterReceiverBoxUpdated = false;
}else
{
this->shadowCasterReceiverBox = shadowCasterReceiverBox;
this->lightProjectionMatrix = shadowCasterReceiverBox.toProjectionMatrix();
this->shadowCasterReceiverBoxUpdated = true;
}
}
示例2: updateFrustumShadowData
/**
* Updates frustum shadow data (models, shadow caster/receiver box, projection matrix)
*/
void ShadowManager::updateFrustumShadowData(const Light *const light, ShadowData *const shadowData)
{
if(light->hasParallelBeams())
{ //sun light
for(unsigned int i=0; i<splittedFrustum.size(); ++i)
{
AABBox<float> aabboxSceneIndependent = createSceneIndependentBox(splittedFrustum[i], light, shadowData->getLightViewMatrix());
OBBox<float> obboxSceneIndependentViewSpace = shadowData->getLightViewMatrix().inverse() * OBBox<float>(aabboxSceneIndependent);
const std::set<Model *> models = modelOctreeManager->getOctreeablesIn(obboxSceneIndependentViewSpace);
shadowData->getFrustumShadowData(i)->setModels(models);
AABBox<float> aabboxSceneDependent = createSceneDependentBox(aabboxSceneIndependent, obboxSceneIndependentViewSpace,
models, shadowData->getLightViewMatrix());
shadowData->getFrustumShadowData(i)->setShadowCasterReceiverBox(aabboxSceneDependent);
shadowData->getFrustumShadowData(i)->setLightProjectionMatrix(aabboxSceneDependent.toProjectionMatrix());
}
}else
{
throw std::runtime_error("Shadow not supported on omnidirectional light.");
}
}