本文整理汇总了C++中Pass::GetVertexShaderDefines方法的典型用法代码示例。如果您正苦于以下问题:C++ Pass::GetVertexShaderDefines方法的具体用法?C++ Pass::GetVertexShaderDefines怎么用?C++ Pass::GetVertexShaderDefines使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Pass
的用法示例。
在下文中一共展示了Pass::GetVertexShaderDefines方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: StringHash
ea::shared_ptr<Technique> Technique::CloneWithDefines(const ea::string& vsDefines, const ea::string& psDefines)
{
// Return self if no actual defines
if (vsDefines.empty() && psDefines.empty())
return ea::shared_ptr<Technique>(this);
ea::pair<StringHash, StringHash> key = ea::make_pair(StringHash(vsDefines), StringHash(psDefines));
// Return existing if possible
auto i = cloneTechniques_.find(key);
if (i != cloneTechniques_.end())
return i->second;
// Set same name as the original for the clones to ensure proper serialization of the material. This should not be a problem
// since the clones are never stored to the resource cache
i = cloneTechniques_.insert(ea::make_pair(key, Clone(GetName()))).first;
for (auto j = i->second->passes_.begin(); j != i->second->passes_.end(); ++j)
{
Pass* pass = (*j);
if (!pass)
continue;
if (!vsDefines.empty())
pass->SetVertexShaderDefines(pass->GetVertexShaderDefines() + " " + vsDefines);
if (!psDefines.empty())
pass->SetPixelShaderDefines(pass->GetPixelShaderDefines() + " " + psDefines);
}
return i->second;
}
示例2: MakePair
SharedPtr<Technique> Technique::CloneWithDefines(const String& vsDefines, const String& psDefines)
{
// Return self if no actual defines
if (vsDefines.Empty() && psDefines.Empty())
return SharedPtr<Technique>(this);
Pair<StringHash, StringHash> key = MakePair(StringHash(vsDefines), StringHash(psDefines));
// Return existing if possible
HashMap<Pair<StringHash, StringHash>, SharedPtr<Technique> >::Iterator i = cloneTechniques_.Find(key);
if (i != cloneTechniques_.End())
return i->second_;
// Set same name as the original for the clones to ensure proper serialization of the material. This should not be a problem
// since the clones are never stored to the resource cache
i = cloneTechniques_.Insert(MakePair(key, Clone(GetName())));
for (Vector<SharedPtr<Pass> >::ConstIterator j = i->second_->passes_.Begin(); j != i->second_->passes_.End(); ++j)
{
Pass* pass = (*j);
if (!pass)
continue;
if (!vsDefines.Empty())
pass->SetVertexShaderDefines(pass->GetVertexShaderDefines() + " " + vsDefines);
if (!psDefines.Empty())
pass->SetPixelShaderDefines(pass->GetPixelShaderDefines() + " " + psDefines);
}
return i->second_;
}
示例3: ret
ea::shared_ptr<Technique> Technique::Clone(const ea::string& cloneName) const
{
ea::shared_ptr<Technique> ret(context_->CreateObject<Technique>());
ret->SetIsDesktop(isDesktop_);
ret->SetName(cloneName);
// Deep copy passes
for (auto i = passes_.begin(); i != passes_.end(); ++i)
{
Pass* srcPass = i->get();
if (!srcPass)
continue;
Pass* newPass = ret->CreatePass(srcPass->GetName());
newPass->SetBlendMode(srcPass->GetBlendMode());
newPass->SetDepthTestMode(srcPass->GetDepthTestMode());
newPass->SetLightingMode(srcPass->GetLightingMode());
newPass->SetDepthWrite(srcPass->GetDepthWrite());
newPass->SetAlphaToCoverage(srcPass->GetAlphaToCoverage());
newPass->SetIsDesktop(srcPass->IsDesktop());
newPass->SetVertexShader(srcPass->GetVertexShader());
newPass->SetPixelShader(srcPass->GetPixelShader());
newPass->SetVertexShaderDefines(srcPass->GetVertexShaderDefines());
newPass->SetPixelShaderDefines(srcPass->GetPixelShaderDefines());
newPass->SetVertexShaderDefineExcludes(srcPass->GetVertexShaderDefineExcludes());
newPass->SetPixelShaderDefineExcludes(srcPass->GetPixelShaderDefineExcludes());
}
return ret;
}
示例4: ret
SharedPtr<Technique> Technique::Clone(const String& cloneName) const
{
SharedPtr<Technique> ret(new Technique(context_));
ret->SetIsDesktop(isDesktop_);
ret->SetName(cloneName);
// Deep copy passes
for (Vector<SharedPtr<Pass> >::ConstIterator i = passes_.Begin(); i != passes_.End(); ++i)
{
Pass* srcPass = i->Get();
if (!srcPass)
continue;
Pass* newPass = ret->CreatePass(srcPass->GetName());
newPass->SetBlendMode(srcPass->GetBlendMode());
newPass->SetDepthTestMode(srcPass->GetDepthTestMode());
newPass->SetLightingMode(srcPass->GetLightingMode());
newPass->SetDepthWrite(srcPass->GetDepthWrite());
newPass->SetAlphaToCoverage(srcPass->GetAlphaToCoverage());
newPass->SetIsDesktop(srcPass->IsDesktop());
newPass->SetVertexShader(srcPass->GetVertexShader());
newPass->SetPixelShader(srcPass->GetPixelShader());
newPass->SetVertexShaderDefines(srcPass->GetVertexShaderDefines());
newPass->SetPixelShaderDefines(srcPass->GetPixelShaderDefines());
newPass->SetVertexShaderDefineExcludes(srcPass->GetVertexShaderDefineExcludes());
newPass->SetPixelShaderDefineExcludes(srcPass->GetPixelShaderDefineExcludes());
}
return ret;
}