本文整理汇总了C++中osg::Geode::className方法的典型用法代码示例。如果您正苦于以下问题:C++ Geode::className方法的具体用法?C++ Geode::className怎么用?C++ Geode::className使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::Geode
的用法示例。
在下文中一共展示了Geode::className方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: apply
virtual void apply(osg::Geode& node)
{
for (int i=0;i<_indent;++i)
{
std::cout<<" ";
}
std::cout<<"["<<_indent+1<<"]"<<node.libraryName()
<<"::"<<node.className()<<std::endl;
for (unsigned int n=0;n<node.getNumDrawables();++n)
{
osg::Drawable *drawable=node.getDrawable(n);
if(!drawable)continue;
for (int i=0;i<_indent;++i)
{
for (int i=0;i<_indent;++i)
{
std::cout<<" ";
}
std::cout<<drawable->libraryName()<<"::"
<<drawable->className()<<std::endl;
}
_indent++;
traverse(node);
_indent--;
}
}
示例2: handle
void SimpleDotVisitor::handle(osg::Geode &node, int id)
{
std::stringstream label;
label << "<top> " << node.className();
if (!node.getName().empty())
{
label << "| " << node.getName();
}
drawNode(id, "record", "solid", label.str(), "brown", "white");
}
示例3: apply
void InfoVisitor::apply(osg::Geode& geode)
{
std::cout << spaces() << geode.libraryName() << "::" << geode.className() << std::endl;
++_level;
osg::Drawable* drawable = nullptr;
for (size_t i = 0; i < geode.getNumDrawables(); ++i)
{
drawable = geode.getDrawable(i);
std::cout << spaces() << drawable->libraryName() << "::" << drawable->className() << std::endl;
}
traverse(geode);
--_level;
}
示例4: apply
virtual void apply(osg::Geode& geode)
{
std::cout
<< spaces()
<< geode.libraryName()
<< "::"
<< geode.className()
<< std::endl;
level_++;
for (unsigned int i = 0; i < geode.getNumDrawables(); ++i)
{
osg::Drawable* drawable = geode.getDrawable(i);
std::cout
<< spaces()
<< drawable->libraryName()
<< "::"
<< drawable->className()
<< std::endl;
}
traverse(geode);
level_--;
}
示例5: name
void
WriterNodeVisitor::buildFaces(osg::Geode & geo,
const osg::Matrix & mat,
ListTriangle & listTriangles,
bool texcoords)
{
unsigned int nbTrianglesRemaining = listTriangles.size();
unsigned int nbVerticesRemaining = calcVertices(geo); // May set _succeded to false
if (!succeeded()) return;
std::string name( getUniqueName(geo.getName().empty() ? geo.className() : geo.getName(), true, "geo") );
if (!succeeded()) return;
Lib3dsMesh *mesh = lib3ds_mesh_new( name.c_str() );
if (!mesh)
{
OSG_NOTIFY(osg::FATAL) << "Allocation error" << std::endl;
_succeeded = false;
return;
}
//copyOsgMatrixToLib3dsMatrix(mesh->matrix, mat);
lib3ds_mesh_resize_faces (mesh, osg::minimum(nbTrianglesRemaining, MAX_FACES));
lib3ds_mesh_resize_vertices(mesh, osg::minimum(nbVerticesRemaining, MAX_VERTICES), texcoords ? 0 : 1, 0); // Not mandatory but will allocate once a big block
// Test if the mesh will be split and needs sorting
if (nbVerticesRemaining >= MAX_VERTICES || nbTrianglesRemaining >= MAX_FACES)
{
OSG_INFO << "Sorting elements..." << std::endl;
WriterCompareTriangle cmp(geo, nbVerticesRemaining);
std::sort(listTriangles.begin(), listTriangles.end(), cmp);
}
MapIndices index_vert;
unsigned int numFace = 0; // Current face index
for (ListTriangle::iterator it = listTriangles.begin(); it != listTriangles.end(); ++it) //Go through the triangle list to define meshs
{
// Test if the mesh will be full after adding a face
if (index_vert.size()+3 >= MAX_VERTICES || numFace+1 >= MAX_FACES)
{
// Finnish mesh
lib3ds_mesh_resize_faces (mesh, numFace);
//lib3ds_mesh_resize_vertices() will be called in buildMesh()
buildMesh(geo, mat, index_vert, texcoords, mesh); // May set _succeded to false
if (!succeeded())
{
lib3ds_mesh_free(mesh);
return;
}
// "Reset" values and start over a new mesh
index_vert.clear();
nbTrianglesRemaining -= numFace;
numFace = 0;
// We can't call a thing like "nbVerticesRemaining -= ...;" because points may be used multiple times.
// [Sukender: An optimisation here would take too much time I think.]
mesh = lib3ds_mesh_new( getUniqueName(geo.getName().empty() ? geo.className() : geo.getName(), true, "geo").c_str());
if (!mesh)
{
OSG_NOTIFY(osg::FATAL) << "Allocation error" << std::endl;
_succeeded = false;
return;
}
lib3ds_mesh_resize_faces (mesh, osg::minimum(nbTrianglesRemaining, MAX_FACES));
lib3ds_mesh_resize_vertices(mesh, osg::minimum(nbVerticesRemaining, MAX_VERTICES), texcoords ? 0 : 1, 0); // Not mandatory but will allocate once a big block
}
Lib3dsFace & face = mesh->faces[numFace++];
face.index[0] = getMeshIndexForGeometryIndex(index_vert, it->first.t1, it->second);
face.index[1] = getMeshIndexForGeometryIndex(index_vert, it->first.t2, it->second);
face.index[2] = getMeshIndexForGeometryIndex(index_vert, it->first.t3, it->second);
face.material = it->first.material;
}
buildMesh(geo, mat, index_vert, texcoords, mesh); // May set _succeded to false
if (!succeeded())
{
lib3ds_mesh_free(mesh);
return;
}
}