本文整理汇总了C++中XMLNodePtr::AppendNode方法的典型用法代码示例。如果您正苦于以下问题:C++ XMLNodePtr::AppendNode方法的具体用法?C++ XMLNodePtr::AppendNode怎么用?C++ XMLNodePtr::AppendNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XMLNodePtr
的用法示例。
在下文中一共展示了XMLNodePtr::AppendNode方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SaveRenderMaterial
void SaveRenderMaterial(RenderMaterialPtr const & mtl, std::string const & mtlml_name)
{
KlayGE::XMLDocument doc;
XMLNodePtr root = doc.AllocNode(XNT_Element, "material");
doc.RootNode(root);
{
XMLNodePtr albedo_node = doc.AllocNode(XNT_Element, "albedo");
std::string color_str = boost::lexical_cast<std::string>(mtl->albedo.x())
+ ' ' + boost::lexical_cast<std::string>(mtl->albedo.y())
+ ' ' + boost::lexical_cast<std::string>(mtl->albedo.z())
+ ' ' + boost::lexical_cast<std::string>(mtl->albedo.w());
albedo_node->AppendAttrib(doc.AllocAttribString("color", color_str));
if (!mtl->tex_names[RenderMaterial::TS_Albedo].empty())
{
albedo_node->AppendAttrib(doc.AllocAttribString("texture", mtl->tex_names[RenderMaterial::TS_Albedo]));
}
root->AppendNode(albedo_node);
}
if ((mtl->metalness > 0) || !mtl->tex_names[RenderMaterial::TS_Metalness].empty())
{
XMLNodePtr metalness_node = doc.AllocNode(XNT_Element, "metalness");
if (mtl->metalness > 0)
{
metalness_node->AppendAttrib(doc.AllocAttribFloat("value", mtl->metalness));
}
if (!mtl->tex_names[RenderMaterial::TS_Metalness].empty())
{
metalness_node->AppendAttrib(doc.AllocAttribString("texture", mtl->tex_names[RenderMaterial::TS_Metalness]));
}
root->AppendNode(metalness_node);
}
if ((mtl->glossiness > 0) || !mtl->tex_names[RenderMaterial::TS_Glossiness].empty())
{
XMLNodePtr glossiness_node = doc.AllocNode(XNT_Element, "glossiness");
if (mtl->glossiness > 0)
{
glossiness_node->AppendAttrib(doc.AllocAttribFloat("value", mtl->glossiness));
}
if (!mtl->tex_names[RenderMaterial::TS_Glossiness].empty())
{
glossiness_node->AppendAttrib(doc.AllocAttribString("texture", mtl->tex_names[RenderMaterial::TS_Glossiness]));
}
root->AppendNode(glossiness_node);
}
if ((mtl->emissive.x() > 0) || (mtl->emissive.y() > 0) || (mtl->emissive.z() > 0)
|| (!mtl->tex_names[RenderMaterial::TS_Emissive].empty()))
{
XMLNodePtr emissive_node = doc.AllocNode(XNT_Element, "emissive");
if ((mtl->emissive.x() > 0) || (mtl->emissive.y() > 0) || (mtl->emissive.z() > 0))
{
std::string color_str = boost::lexical_cast<std::string>(mtl->emissive.x())
+ ' ' + boost::lexical_cast<std::string>(mtl->emissive.y())
+ ' ' + boost::lexical_cast<std::string>(mtl->emissive.z());
emissive_node->AppendAttrib(doc.AllocAttribString("color", color_str));
}
if (!mtl->tex_names[RenderMaterial::TS_Emissive].empty())
{
emissive_node->AppendAttrib(doc.AllocAttribString("texture", mtl->tex_names[RenderMaterial::TS_Emissive]));
}
root->AppendNode(emissive_node);
}
if (!mtl->tex_names[RenderMaterial::TS_Normal].empty())
{
XMLNodePtr normal_node = doc.AllocNode(XNT_Element, "normal");
normal_node->AppendAttrib(doc.AllocAttribString("texture", mtl->tex_names[RenderMaterial::TS_Normal]));
root->AppendNode(normal_node);
}
if (!mtl->tex_names[RenderMaterial::TS_Height].empty())
{
XMLNodePtr height_node = doc.AllocNode(XNT_Element, "height");
height_node->AppendAttrib(doc.AllocAttribString("texture", mtl->tex_names[RenderMaterial::TS_Height]));
height_node->AppendAttrib(doc.AllocAttribFloat("offset", mtl->height_offset_scale.x()));
height_node->AppendAttrib(doc.AllocAttribFloat("scale", mtl->height_offset_scale.y()));
root->AppendNode(height_node);
}
if (mtl->detail_mode != RenderMaterial::SDM_Parallax)
{
XMLNodePtr detail_node = doc.AllocNode(XNT_Element, "detail");
//.........这里部分代码省略.........