本文整理汇总了C++中XMLElement::GetAttributeLower方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLElement::GetAttributeLower方法的具体用法?C++ XMLElement::GetAttributeLower怎么用?C++ XMLElement::GetAttributeLower使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLElement
的用法示例。
在下文中一共展示了XMLElement::GetAttributeLower方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetParameters
void Texture::SetParameters(const XMLElement& element)
{
XMLElement paramElem = element.GetChild();
while (paramElem)
{
String name = paramElem.GetName();
if (name == "address")
{
String coord = paramElem.GetAttributeLower("coord");
if (coord.Length() >= 1)
{
TextureCoordinate coordIndex = (TextureCoordinate)(coord[0] - 'u');
String mode = paramElem.GetAttributeLower("mode");
SetAddressMode(coordIndex, (TextureAddressMode)GetStringListIndex(mode.CString(), addressModeNames, ADDRESS_WRAP));
}
}
if (name == "border")
SetBorderColor(paramElem.GetColor("color"));
if (name == "filter")
{
String mode = paramElem.GetAttributeLower("mode");
SetFilterMode((TextureFilterMode)GetStringListIndex(mode.CString(), filterModeNames, FILTER_DEFAULT));
}
if (name == "mipmap")
SetNumLevels(paramElem.GetBool("enable") ? 0 : 1);
if (name == "quality")
{
if (paramElem.HasAttribute("low"))
SetMipsToSkip(QUALITY_LOW, paramElem.GetInt("low"));
if (paramElem.HasAttribute("med"))
SetMipsToSkip(QUALITY_MEDIUM, paramElem.GetInt("med"));
if (paramElem.HasAttribute("medium"))
SetMipsToSkip(QUALITY_MEDIUM, paramElem.GetInt("medium"));
if (paramElem.HasAttribute("high"))
SetMipsToSkip(QUALITY_HIGH, paramElem.GetInt("high"));
}
if (name == "srgb")
SetSRGB(paramElem.GetBool("enable"));
paramElem = paramElem.GetNext();
}
}
示例2: BeginLoad
bool Technique::BeginLoad(Deserializer& source)
{
passes_.Clear();
SetMemoryUse(sizeof(Technique));
SharedPtr<XMLFile> xml(new XMLFile(context_));
if (!xml->Load(source))
return false;
XMLElement rootElem = xml->GetRoot();
if (rootElem.HasAttribute("sm3"))
isSM3_ = rootElem.GetBool("sm3");
String globalVS = rootElem.GetAttribute("vs");
String globalPS = rootElem.GetAttribute("ps");
String globalVSDefines = rootElem.GetAttribute("vsdefines");
String globalPSDefines = rootElem.GetAttribute("psdefines");
// End with space so that the pass-specific defines can be appended
if (!globalVSDefines.Empty())
globalVSDefines += ' ';
if (!globalPSDefines.Empty())
globalPSDefines += ' ';
bool globalAlphaMask = false;
if (rootElem.HasAttribute("alphamask"))
globalAlphaMask = rootElem.GetBool("alphamask");
unsigned numPasses = 0;
XMLElement passElem = rootElem.GetChild("pass");
while (passElem)
{
if (passElem.HasAttribute("name"))
{
StringHash nameHash(passElem.GetAttribute("name"));
Pass* newPass = CreatePass(nameHash);
++numPasses;
if (passElem.HasAttribute("sm3"))
newPass->SetIsSM3(passElem.GetBool("sm3"));
// Append global defines only when pass does not redefine the shader
if (passElem.HasAttribute("vs"))
{
newPass->SetVertexShader(passElem.GetAttribute("vs"));
newPass->SetVertexShaderDefines(passElem.GetAttribute("vsdefines"));
}
else
{
newPass->SetVertexShader(globalVS);
newPass->SetVertexShaderDefines(globalVSDefines + passElem.GetAttribute("vsdefines"));
}
if (passElem.HasAttribute("ps"))
{
newPass->SetPixelShader(passElem.GetAttribute("ps"));
newPass->SetPixelShaderDefines(passElem.GetAttribute("psdefines"));
}
else
{
newPass->SetPixelShader(globalPS);
newPass->SetPixelShaderDefines(globalPSDefines + passElem.GetAttribute("psdefines"));
}
if (passElem.HasAttribute("lighting"))
{
String lighting = passElem.GetAttributeLower("lighting");
newPass->SetLightingMode((PassLightingMode)GetStringListIndex(lighting.CString(), lightingModeNames,
LIGHTING_UNLIT));
}
if (passElem.HasAttribute("blend"))
{
String blend = passElem.GetAttributeLower("blend");
newPass->SetBlendMode((BlendMode)GetStringListIndex(blend.CString(), blendModeNames, BLEND_REPLACE));
}
if (passElem.HasAttribute("depthtest"))
{
String depthTest = passElem.GetAttributeLower("depthtest");
if (depthTest == "false")
newPass->SetDepthTestMode(CMP_ALWAYS);
else
newPass->SetDepthTestMode((CompareMode)GetStringListIndex(depthTest.CString(), compareModeNames, CMP_LESS));
}
if (passElem.HasAttribute("depthwrite"))
newPass->SetDepthWrite(passElem.GetBool("depthwrite"));
if (passElem.HasAttribute("alphamask"))
newPass->SetAlphaMask(passElem.GetBool("alphamask"));
else
newPass->SetAlphaMask(globalAlphaMask);
}
else
LOGERROR("Missing pass name");
passElem = passElem.GetNext("pass");
}
// Calculate memory use now
//.........这里部分代码省略.........
示例3: BeginLoad
bool Technique::BeginLoad(Deserializer& source)
{
passes_.clear();
cloneTechniques_.clear();
SetMemoryUse(sizeof(Technique));
ea::shared_ptr<XMLFile> xml(context_->CreateObject<XMLFile>());
if (!xml->Load(source))
return false;
XMLElement rootElem = xml->GetRoot();
if (rootElem.HasAttribute("desktop"))
isDesktop_ = rootElem.GetBool("desktop");
ea::string globalVS = rootElem.GetAttribute("vs");
ea::string globalPS = rootElem.GetAttribute("ps");
ea::string globalVSDefines = rootElem.GetAttribute("vsdefines");
ea::string globalPSDefines = rootElem.GetAttribute("psdefines");
// End with space so that the pass-specific defines can be appended
if (!globalVSDefines.empty())
globalVSDefines += ' ';
if (!globalPSDefines.empty())
globalPSDefines += ' ';
XMLElement passElem = rootElem.GetChild("pass");
while (passElem)
{
if (passElem.HasAttribute("name"))
{
Pass* newPass = CreatePass(passElem.GetAttribute("name"));
if (passElem.HasAttribute("desktop"))
newPass->SetIsDesktop(passElem.GetBool("desktop"));
// Append global defines only when pass does not redefine the shader
if (passElem.HasAttribute("vs"))
{
newPass->SetVertexShader(passElem.GetAttribute("vs"));
newPass->SetVertexShaderDefines(passElem.GetAttribute("vsdefines"));
}
else
{
newPass->SetVertexShader(globalVS);
newPass->SetVertexShaderDefines(globalVSDefines + passElem.GetAttribute("vsdefines"));
}
if (passElem.HasAttribute("ps"))
{
newPass->SetPixelShader(passElem.GetAttribute("ps"));
newPass->SetPixelShaderDefines(passElem.GetAttribute("psdefines"));
}
else
{
newPass->SetPixelShader(globalPS);
newPass->SetPixelShaderDefines(globalPSDefines + passElem.GetAttribute("psdefines"));
}
newPass->SetVertexShaderDefineExcludes(passElem.GetAttribute("vsexcludes"));
newPass->SetPixelShaderDefineExcludes(passElem.GetAttribute("psexcludes"));
if (passElem.HasAttribute("lighting"))
{
ea::string lighting = passElem.GetAttributeLower("lighting");
newPass->SetLightingMode((PassLightingMode)GetStringListIndex(lighting.c_str(), lightingModeNames,
LIGHTING_UNLIT));
}
if (passElem.HasAttribute("blend"))
{
ea::string blend = passElem.GetAttributeLower("blend");
newPass->SetBlendMode((BlendMode)GetStringListIndex(blend.c_str(), blendModeNames, BLEND_REPLACE));
}
if (passElem.HasAttribute("cull"))
{
ea::string cull = passElem.GetAttributeLower("cull");
newPass->SetCullMode((CullMode)GetStringListIndex(cull.c_str(), cullModeNames, MAX_CULLMODES));
}
if (passElem.HasAttribute("depthtest"))
{
ea::string depthTest = passElem.GetAttributeLower("depthtest");
if (depthTest == "false")
newPass->SetDepthTestMode(CMP_ALWAYS);
else
newPass->SetDepthTestMode((CompareMode)GetStringListIndex(depthTest.c_str(), compareModeNames, CMP_LESS));
}
if (passElem.HasAttribute("depthwrite"))
newPass->SetDepthWrite(passElem.GetBool("depthwrite"));
if (passElem.HasAttribute("alphatocoverage"))
newPass->SetAlphaToCoverage(passElem.GetBool("alphatocoverage"));
}
else
URHO3D_LOGERROR("Missing pass name");
passElem = passElem.GetNext("pass");
}
//.........这里部分代码省略.........
示例4: Load
void RenderPathCommand::Load(const XMLElement& element)
{
type_ = (RenderCommandType)GetStringListIndex(element.GetAttributeLower("type").CString(), commandTypeNames, CMD_NONE);
tag_ = element.GetAttribute("tag");
if (element.HasAttribute("enabled"))
enabled_ = element.GetBool("enabled");
if (element.HasAttribute("metadata"))
metadata_ = element.GetAttribute("metadata");
switch (type_)
{
case CMD_CLEAR:
if (element.HasAttribute("color"))
{
clearFlags_ |= CLEAR_COLOR;
if (element.GetAttributeLower("color") == "fog")
useFogColor_ = true;
else
clearColor_ = element.GetColor("color");
}
if (element.HasAttribute("depth"))
{
clearFlags_ |= CLEAR_DEPTH;
clearDepth_ = element.GetFloat("depth");
}
if (element.HasAttribute("stencil"))
{
clearFlags_ |= CLEAR_STENCIL;
clearStencil_ = (unsigned)element.GetInt("stencil");
}
break;
case CMD_SCENEPASS:
pass_ = element.GetAttribute("pass");
sortMode_ =
(RenderCommandSortMode)GetStringListIndex(element.GetAttributeLower("sort").CString(), sortModeNames, SORT_FRONTTOBACK);
if (element.HasAttribute("marktostencil"))
markToStencil_ = element.GetBool("marktostencil");
if (element.HasAttribute("vertexlights"))
vertexLights_ = element.GetBool("vertexlights");
break;
case CMD_FORWARDLIGHTS:
pass_ = element.GetAttribute("pass");
if (element.HasAttribute("uselitbase"))
useLitBase_ = element.GetBool("uselitbase");
break;
case CMD_LIGHTVOLUMES:
case CMD_QUAD:
vertexShaderName_ = element.GetAttribute("vs");
pixelShaderName_ = element.GetAttribute("ps");
vertexShaderDefines_ = element.GetAttribute("vsdefines");
pixelShaderDefines_ = element.GetAttribute("psdefines");
if (type_ == CMD_QUAD)
{
if (element.HasAttribute("blend"))
{
String blend = element.GetAttributeLower("blend");
blendMode_ = ((BlendMode)GetStringListIndex(blend.CString(), blendModeNames, BLEND_REPLACE));
}
XMLElement parameterElem = element.GetChild("parameter");
while (parameterElem)
{
String name = parameterElem.GetAttribute("name");
shaderParameters_[name] = Material::ParseShaderParameterValue(parameterElem.GetAttribute("value"));
parameterElem = parameterElem.GetNext("parameter");
}
}
break;
default:
break;
}
// By default use 1 output, which is the viewport
outputs_.Resize(1);
outputs_[0] = MakePair(String("viewport"), FACE_POSITIVE_X);
if (element.HasAttribute("output"))
outputs_[0].first_ = element.GetAttribute("output");
if (element.HasAttribute("face"))
outputs_[0].second_ = (CubeMapFace)element.GetInt("face");
if (element.HasAttribute("depthstencil"))
depthStencilName_ = element.GetAttribute("depthstencil");
// Check for defining multiple outputs
XMLElement outputElem = element.GetChild("output");
while (outputElem)
{
unsigned index = (unsigned)outputElem.GetInt("index");
if (index < MAX_RENDERTARGETS)
{
if (index >= outputs_.Size())
outputs_.Resize(index + 1);
outputs_[index].first_ = outputElem.GetAttribute("name");
outputs_[index].second_ = outputElem.HasAttribute("face") ? (CubeMapFace)outputElem.GetInt("face") : FACE_POSITIVE_X;
}
outputElem = outputElem.GetNext("output");
}
//.........这里部分代码省略.........
示例5: Load
bool Material::Load(const XMLElement& source)
{
ResetToDefaults();
if (source.IsNull())
{
LOGERROR("Can not load material from null XML element");
return false;
}
ResourceCache* cache = GetSubsystem<ResourceCache>();
XMLElement techniqueElem = source.GetChild("technique");
techniques_.Clear();
while (techniqueElem)
{
Technique* tech = cache->GetResource<Technique>(techniqueElem.GetAttribute("name"));
if (tech)
{
TechniqueEntry newTechnique;
newTechnique.technique_ = tech;
if (techniqueElem.HasAttribute("quality"))
newTechnique.qualityLevel_ = techniqueElem.GetInt("quality");
if (techniqueElem.HasAttribute("loddistance"))
newTechnique.lodDistance_ = techniqueElem.GetFloat("loddistance");
techniques_.Push(newTechnique);
}
techniqueElem = techniqueElem.GetNext("technique");
}
SortTechniques();
XMLElement textureElem = source.GetChild("texture");
while (textureElem)
{
TextureUnit unit = TU_DIFFUSE;
if (textureElem.HasAttribute("unit"))
{
String unitName = textureElem.GetAttributeLower("unit");
if (unitName.Length() > 1)
{
unit = ParseTextureUnitName(unitName);
if (unit >= MAX_MATERIAL_TEXTURE_UNITS)
LOGERROR("Unknown or illegal texture unit " + unitName);
}
else
unit = (TextureUnit)Clamp(ToInt(unitName), 0, MAX_MATERIAL_TEXTURE_UNITS - 1);
}
if (unit != MAX_MATERIAL_TEXTURE_UNITS)
{
String name = textureElem.GetAttribute("name");
// Detect cube maps by file extension: they are defined by an XML file
if (GetExtension(name) == ".xml")
SetTexture(unit, cache->GetResource<TextureCube>(name));
else
SetTexture(unit, cache->GetResource<Texture2D>(name));
}
textureElem = textureElem.GetNext("texture");
}
XMLElement parameterElem = source.GetChild("parameter");
while (parameterElem)
{
String name = parameterElem.GetAttribute("name");
SetShaderParameter(name, ParseShaderParameterValue(parameterElem.GetAttribute("value")));
parameterElem = parameterElem.GetNext("parameter");
}
XMLElement cullElem = source.GetChild("cull");
if (cullElem)
SetCullMode((CullMode)GetStringListIndex(cullElem.GetAttribute("value").CString(), cullModeNames, CULL_CCW));
XMLElement shadowCullElem = source.GetChild("shadowcull");
if (shadowCullElem)
SetShadowCullMode((CullMode)GetStringListIndex(shadowCullElem.GetAttribute("value").CString(), cullModeNames, CULL_CCW));
XMLElement depthBiasElem = source.GetChild("depthbias");
if (depthBiasElem)
SetDepthBias(BiasParameters(depthBiasElem.GetFloat("constant"), depthBiasElem.GetFloat("slopescaled")));
// Calculate memory use
unsigned memoryUse = sizeof(Material);
memoryUse += techniques_.Size() * sizeof(TechniqueEntry);
memoryUse += MAX_MATERIAL_TEXTURE_UNITS * sizeof(SharedPtr<Texture>);
memoryUse += shaderParameters_.Size() * sizeof(MaterialShaderParameter);
SetMemoryUse(memoryUse);
CheckOcclusion();
return true;
}
示例6: Load
bool Technique::Load(Deserializer& source)
{
PROFILE(LoadTechnique);
SharedPtr<XMLFile> xml(new XMLFile(context_));
if (!xml->Load(source))
return false;
XMLElement rootElem = xml->GetRoot();
if (rootElem.HasAttribute("sm3"))
isSM3_ = rootElem.GetBool("sm3");
unsigned numPasses = 0;
XMLElement passElem = rootElem.GetChild("pass");
while (passElem)
{
if (passElem.HasAttribute("name"))
{
StringHash nameHash(passElem.GetAttribute("name"));
Pass* newPass = CreatePass(nameHash);
++numPasses;
if (passElem.HasAttribute("vs"))
newPass->SetVertexShader(passElem.GetAttribute("vs"));
if (passElem.HasAttribute("ps"))
newPass->SetPixelShader(passElem.GetAttribute("ps"));
if (passElem.HasAttribute("lighting"))
{
String lighting = passElem.GetAttributeLower("lighting");
newPass->SetLightingMode((PassLightingMode)GetStringListIndex(lighting.CString(), lightingModeNames,
LIGHTING_UNLIT));
}
if (passElem.HasAttribute("blend"))
{
String blend = passElem.GetAttributeLower("blend");
newPass->SetBlendMode((BlendMode)GetStringListIndex(blend.CString(), blendModeNames, BLEND_REPLACE));
}
if (passElem.HasAttribute("depthtest"))
{
String depthTest = passElem.GetAttributeLower("depthtest");
if (depthTest == "false")
newPass->SetDepthTestMode(CMP_ALWAYS);
else
newPass->SetDepthTestMode((CompareMode)GetStringListIndex(depthTest.CString(), compareModeNames, CMP_LESS));
}
if (passElem.HasAttribute("depthwrite"))
newPass->SetDepthWrite(passElem.GetBool("depthwrite"));
if (passElem.HasAttribute("alphamask"))
newPass->SetAlphaMask(passElem.GetBool("alphamask"));
}
else
LOGERROR("Missing pass name");
passElem = passElem.GetNext("pass");
}
// Calculate memory use
unsigned memoryUse = sizeof(Technique) + numPasses * sizeof(Pass);
SetMemoryUse(memoryUse);
return true;
}
示例7: Load
void RenderPathCommand::Load(const XMLElement& element)
{
type_ = (RenderCommandType)GetStringListIndex(element.GetAttributeLower("type").CString(), commandTypeNames, CMD_NONE);
tag_ = element.GetAttribute("tag");
if (element.HasAttribute("enabled"))
enabled_ = element.GetBool("enabled");
if (element.HasAttribute("metadata"))
metadata_ = element.GetAttribute("metadata");
switch (type_)
{
case CMD_CLEAR:
if (element.HasAttribute("color"))
{
clearFlags_ |= CLEAR_COLOR;
// Mark fog color with negative values
if (element.GetAttributeLower("color") == "fog")
useFogColor_ = true;
else
clearColor_ = element.GetColor("color");
}
if (element.HasAttribute("depth"))
{
clearFlags_ |= CLEAR_DEPTH;
clearDepth_ = element.GetFloat("depth");
}
if (element.HasAttribute("stencil"))
{
clearFlags_ |= CLEAR_STENCIL;
clearStencil_ = element.GetInt("stencil");
}
break;
case CMD_SCENEPASS:
pass_ = element.GetAttribute("pass");
sortMode_ = (RenderCommandSortMode)GetStringListIndex(element.GetAttributeLower("sort").CString(), sortModeNames, SORT_FRONTTOBACK);
if (element.HasAttribute("marktostencil"))
markToStencil_ = element.GetBool("marktostencil");
if (element.HasAttribute("vertexlights"))
vertexLights_ = element.GetBool("vertexlights");
if (element.HasAttribute("usescissor"))
useScissor_ = element.GetBool("usescissor");
break;
case CMD_FORWARDLIGHTS:
pass_ = element.GetAttribute("pass");
if (element.HasAttribute("uselitbase"))
useLitBase_ = element.GetBool("uselitbase");
break;
case CMD_LIGHTVOLUMES:
case CMD_QUAD:
vertexShaderName_ = element.GetAttribute("vs");
pixelShaderName_ = element.GetAttribute("ps");
if (type_ == CMD_QUAD)
{
XMLElement parameterElem = element.GetChild("parameter");
while (parameterElem)
{
String name = parameterElem.GetAttribute("name");
Variant value = parameterElem.GetVectorVariant("value");
shaderParameters_[name] = value;
parameterElem = parameterElem.GetNext("parameter");
}
}
break;
default:
break;
}
// By default use 1 output, which is the viewport
outputNames_.Push("viewport");
if (element.HasAttribute("output"))
outputNames_[0] = element.GetAttribute("output");
// Check for defining multiple outputs
XMLElement outputElem = element.GetChild("output");
while (outputElem)
{
unsigned index = outputElem.GetInt("index");
if (index < MAX_RENDERTARGETS)
{
if (index >= outputNames_.Size())
outputNames_.Resize(index + 1);
outputNames_[index] = outputElem.GetAttribute("name");
}
outputElem = outputElem.GetNext("output");
}
XMLElement textureElem = element.GetChild("texture");
while (textureElem)
{
TextureUnit unit = TU_DIFFUSE;
if (textureElem.HasAttribute("unit"))
{
String unitName = textureElem.GetAttributeLower("unit");
if (unitName.Length() > 1)
unit = ParseTextureUnitName(unitName);
else
//.........这里部分代码省略.........