本文整理汇总了C++中PointLight::getLinearAttenuation方法的典型用法代码示例。如果您正苦于以下问题:C++ PointLight::getLinearAttenuation方法的具体用法?C++ PointLight::getLinearAttenuation怎么用?C++ PointLight::getLinearAttenuation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PointLight
的用法示例。
在下文中一共展示了PointLight::getLinearAttenuation方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateLightChunk
/*! Sets the \a lightChunk fields based on light.
\dev
DeferredShadingStage can not use the light's own chunk, because
it computes the light position based on DrawEnv::getCameraViewing(),
which is just the ortho camera for rendering the full screen quads, not
the perspective camera used during the gbuffer pass.
\enddev
*/
void DeferredShadingStage::updateLightChunk(
DSLightChunk *lightChunk, Light *light)
{
lightChunk->setBeacon (light->getBeacon ());
lightChunk->setAmbient (light->getAmbient ());
lightChunk->setDiffuse (light->getDiffuse ());
lightChunk->setSpecular(light->getSpecular());
if(light->getType() == DirectionalLight::getClassType())
{
DirectionalLight *dirL = static_cast<DirectionalLight *>(light);
Vec4f dir(dirL->getDirection());
dir[3] = 0.f;
lightChunk->setPosition(dir);
}
else if(light->getType() == PointLight::getClassType())
{
PointLight *pointL = static_cast<PointLight *>(light);
Vec4f pos(pointL->getPosition());
pos[3] = 1.f;
lightChunk->setPosition (pos );
lightChunk->setConstantAttenuation (pointL->getConstantAttenuation ());
lightChunk->setLinearAttenuation (pointL->getLinearAttenuation ());
lightChunk->setQuadraticAttenuation(pointL->getQuadraticAttenuation());
lightChunk->setCutoff (180.f );
}
else if(light->getType() == SpotLight::getClassType())
{
SpotLight *spotL = static_cast<SpotLight *>(light);
Vec4f pos(spotL->getPosition());
pos[3] = 1.f;
lightChunk->setPosition (pos );
lightChunk->setConstantAttenuation (spotL->getConstantAttenuation ());
lightChunk->setLinearAttenuation (spotL->getLinearAttenuation ());
lightChunk->setQuadraticAttenuation(spotL->getQuadraticAttenuation());
lightChunk->setDirection (spotL->getDirection ());
lightChunk->setExponent (spotL->getSpotExponent ());
lightChunk->setCutoff (
osgRad2Degree(spotL->getSpotCutOff()));
}
else
{
SWARNING << "DeferredShadingStage::updateLightChunk: "
<< "Unknown light type." << endLog;
}
}