本文整理汇总了C++中Mesh::Attach方法的典型用法代码示例。如果您正苦于以下问题:C++ Mesh::Attach方法的具体用法?C++ Mesh::Attach怎么用?C++ Mesh::Attach使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mesh
的用法示例。
在下文中一共展示了Mesh::Attach方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ParseMesh
//разбор меша
void ParseMesh (Parser::Iterator mesh_iter)
{
static const char* METHOD_NAME = "media::geometry::XmlMeshLibraryLoader::ParseMesh";
//чтение имён: меша, индексного буфера (если есть)
const char *id = get<const char*> (*mesh_iter, "id"),
*name = get<const char*> (*mesh_iter, "name", id),
*ib_id = "";
try_read (*mesh_iter, "index_buffer", ib_id);
//создание меша
Mesh mesh;
mesh.Rename (name);
//поиск вершинных буферов
for (Parser::AttributeIterator vb_iter=make_attribute_iterator (*mesh_iter, "vertex_buffers.#text"); vb_iter; ++vb_iter)
{
VertexBufferMap::iterator iter = vertex_buffers.find (*vb_iter);
if (iter == vertex_buffers.end ())
throw xtl::make_argument_exception (METHOD_NAME, "vertex_buffers[i]", *vb_iter, "Vertex buffer not found");
mesh.Attach (iter->second);
}
//поиск индексного буфера
IndexBuffer* ib = 0;
if (*ib_id)
{
IndexBufferMap::iterator ib_iter = index_buffers.find (ib_id);
if (ib_iter == index_buffers.end ())
throw xtl::make_argument_exception (METHOD_NAME, "index_buffer", ib_id, "Index buffer not found");
ib = &ib_iter->second;
}
if (ib)
mesh.Attach (*ib);
//чтение примитивов
for_each_child (*mesh_iter, "primitives.primitive", xtl::bind (&XmlMeshLibraryLoader::ParsePrimitive, this, _1, xtl::ref (mesh)));
//присоединение меша к модели
library.Attach (id, mesh);
}