本文整理汇总了C++中TextureUnitState::_getTexturePtr方法的典型用法代码示例。如果您正苦于以下问题:C++ TextureUnitState::_getTexturePtr方法的具体用法?C++ TextureUnitState::_getTexturePtr怎么用?C++ TextureUnitState::_getTexturePtr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TextureUnitState
的用法示例。
在下文中一共展示了TextureUnitState::_getTexturePtr方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
//-----------------------------------------------------------------------
void DeferredLightRenderOperation::execute(SceneManager *sm, RenderSystem *rs)
{
Ogre::Camera* cam = mViewport->getCamera();
mAmbientLight->updateFromCamera(cam);
Technique* tech = mAmbientLight->getMaterial()->getBestTechnique();
injectTechnique(sm, tech, mAmbientLight, 0);
const LightList& lightList = sm->_getLightsAffectingFrustum();
for (LightList::const_iterator it = lightList.begin(); it != lightList.end(); it++)
{
Light* light = *it;
Ogre::LightList ll;
ll.push_back(light);
//if (++i != 2) continue;
//if (light->getType() != Light::LT_DIRECTIONAL) continue;
//if (light->getDiffuseColour() != ColourValue::Red) continue;
LightsMap::iterator dLightIt = mLights.find(light);
DLight* dLight = 0;
if (dLightIt == mLights.end())
{
dLight = createDLight(light);
}
else
{
dLight = dLightIt->second;
dLight->updateFromParent();
}
dLight->updateFromCamera(cam);
tech = dLight->getMaterial()->getBestTechnique();
//Update shadow texture
if (dLight->getCastChadows())
{
SceneManager::RenderContext* context = sm->_pauseRendering();
sm->prepareShadowTextures(cam, mViewport, &ll);
sm->_resumeRendering(context);
Pass* pass = tech->getPass(0);
TextureUnitState* tus = pass->getTextureUnitState("ShadowMap");
assert(tus);
const TexturePtr& shadowTex = sm->getShadowTexture(0);
if (tus->_getTexturePtr() != shadowTex)
{
tus->_setTexturePtr(shadowTex);
}
}
injectTechnique(sm, tech, dLight, &ll);
}
}
示例2: setPaintTexutreName
// 替换指定纹理层的纹理
bool TerrainImpl::setPaintTexutreName(size_t nPaintChannel , const String &strTextureName)
{
Technique *pTech = mMaterial->getTechnique(0);
Pass *pass = pTech->getPass(nPaintChannel / SPLATTING_TEXTURE_NUM);
if(pass)
{
TextureUnitState *texture = pass->getTextureUnitState(COVERAGE_TEXTURE_NUM + (nPaintChannel % SPLATTING_TEXTURE_NUM));
if(texture)
{
texture->setTextureName(strTextureName);
return texture->getTextureName() == strTextureName && !texture->_getTexturePtr().isNull() && texture->_getTexturePtr()->isLoaded();
}
}
return false;
}
示例3: _setTextureUnitSettings
//-----------------------------------------------------------------------
void RenderSystem::_setTextureUnitSettings(size_t texUnit, TextureUnitState& tl)
{
// This method is only ever called to set a texture unit to valid details
// The method _disableTextureUnit is called to turn a unit off
const TexturePtr& tex = tl._getTexturePtr();
// Vertex texture binding?
if (mCurrentCapabilities->hasCapability(RSC_VERTEX_TEXTURE_FETCH) &&
!mCurrentCapabilities->getVertexTextureUnitsShared())
{
if (tl.getBindingType() == TextureUnitState::BT_VERTEX)
{
// Bind vertex texture
_setVertexTexture(texUnit, tex);
// bind nothing to fragment unit (hardware isn't shared but fragment
// unit can't be using the same index
_setTexture(texUnit, true, sNullTexPtr);
}
else
{
// vice versa
_setVertexTexture(texUnit, sNullTexPtr);
_setTexture(texUnit, true, tex);
}
}
else
{
// Shared vertex / fragment textures or no vertex texture support
// Bind texture (may be blank)
_setTexture(texUnit, true, tex);
}
// Set texture coordinate set
_setTextureCoordSet(texUnit, tl.getTextureCoordSet());
// Set texture layer filtering
_setTextureUnitFiltering(texUnit,
tl.getTextureFiltering(FT_MIN),
tl.getTextureFiltering(FT_MAG),
tl.getTextureFiltering(FT_MIP));
// Set texture layer filtering
_setTextureLayerAnisotropy(texUnit, tl.getTextureAnisotropy());
// Set mipmap biasing
_setTextureMipmapBias(texUnit, tl.getTextureMipmapBias());
// Set blend modes
// Note, colour before alpha is important
_setTextureBlendMode(texUnit, tl.getColourBlendMode());
_setTextureBlendMode(texUnit, tl.getAlphaBlendMode());
// Texture addressing mode
const TextureUnitState::UVWAddressingMode& uvw = tl.getTextureAddressingMode();
_setTextureAddressingMode(texUnit, uvw);
// Set texture border colour only if required
if (uvw.u == TextureUnitState::TAM_BORDER ||
uvw.v == TextureUnitState::TAM_BORDER ||
uvw.w == TextureUnitState::TAM_BORDER)
{
_setTextureBorderColour(texUnit, tl.getTextureBorderColour());
}
// Set texture effects
TextureUnitState::EffectMap::iterator effi;
// Iterate over new effects
bool anyCalcs = false;
for (effi = tl.mEffects.begin(); effi != tl.mEffects.end(); ++effi)
{
switch (effi->second.type)
{
case TextureUnitState::ET_ENVIRONMENT_MAP:
if (effi->second.subtype == TextureUnitState::ENV_CURVED)
{
_setTextureCoordCalculation(texUnit, TEXCALC_ENVIRONMENT_MAP);
anyCalcs = true;
}
else if (effi->second.subtype == TextureUnitState::ENV_PLANAR)
{
_setTextureCoordCalculation(texUnit, TEXCALC_ENVIRONMENT_MAP_PLANAR);
anyCalcs = true;
}
else if (effi->second.subtype == TextureUnitState::ENV_REFLECTION)
{
_setTextureCoordCalculation(texUnit, TEXCALC_ENVIRONMENT_MAP_REFLECTION);
anyCalcs = true;
}
else if (effi->second.subtype == TextureUnitState::ENV_NORMAL)
{
_setTextureCoordCalculation(texUnit, TEXCALC_ENVIRONMENT_MAP_NORMAL);
anyCalcs = true;
}
break;
case TextureUnitState::ET_UVSCROLL:
case TextureUnitState::ET_USCROLL:
case TextureUnitState::ET_VSCROLL:
case TextureUnitState::ET_ROTATE:
case TextureUnitState::ET_TRANSFORM:
break;
//.........这里部分代码省略.........