本文整理汇总了C++中TriangleMesh::isEnabled方法的典型用法代码示例。如果您正苦于以下问题:C++ TriangleMesh::isEnabled方法的具体用法?C++ TriangleMesh::isEnabled怎么用?C++ TriangleMesh::isEnabled使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TriangleMesh
的用法示例。
在下文中一共展示了TriangleMesh::isEnabled方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: assert
void BVH4BuilderTopLevel::build (size_t threadIndex, size_t threadCount, size_t objectID)
{
/* ignore if no triangle mesh or not enabled */
TriangleMesh* mesh = scene->getTriangleMeshSafe(objectID);
if (mesh == NULL || !mesh->isEnabled() || mesh->numTimeSteps != 1)
return;
BVH4* object = objects [objectID]; assert(object);
Builder* builder = builders[objectID]; assert(builder);
/* build object if it got modified */
if (mesh->isModified()) {
builder->build(threadIndex,threadCount);
mesh->state = Geometry::ENABLED;
}
/* create build primitive */
if (!object->bounds.empty())
refs[nextRef++] = BuildRef(object->bounds,object->root);
}
示例2: pinfo
void BVH4BuilderTwoLevel::build(size_t threadIndex, size_t threadCount)
{
/* delete some objects */
size_t N = scene->size();
if (N < objects.size()) {
parallel_for(N, objects.size(), [&] (const range<size_t>& r) {
for (size_t i=r.begin(); i<r.end(); i++) {
delete builders[i]; builders[i] = nullptr;
delete objects[i]; objects[i] = nullptr;
}
});
}
/* reset memory allocator */
bvh->alloc.reset();
/* skip build for empty scene */
const size_t numPrimitives = scene->getNumPrimitives<TriangleMesh,1>();
if (numPrimitives == 0) {
prims.resize(0);
bvh->set(BVH4::emptyNode,empty,0);
return;
}
double t0 = bvh->preBuild(TOSTRING(isa) "::BVH4BuilderTwoLevel");
#if PROFILE
profile(2,20,numPrimitives,[&] (ProfileTimer& timer)
{
#endif
/* resize object array if scene got larger */
if (objects.size() < N) objects.resize(N);
if (builders.size() < N) builders.resize(N);
if (refs.size() < N) refs.resize(N);
nextRef = 0;
/* create of acceleration structures */
parallel_for(size_t(0), N, [&] (const range<size_t>& r)
{
for (size_t objectID=r.begin(); objectID<r.end(); objectID++)
{
TriangleMesh* mesh = scene->getTriangleMeshSafe(objectID);
/* verify meshes got deleted properly */
if (mesh == nullptr || mesh->numTimeSteps != 1) {
assert(objectID < objects.size () && objects[objectID] == nullptr);
assert(objectID < builders.size() && builders[objectID] == nullptr);
continue;
}
/* create BVH and builder for new meshes */
if (objects[objectID] == nullptr)
createTriangleMeshAccel(mesh,(AccelData*&)objects[objectID],builders[objectID]);
}
});
/* parallel build of acceleration structures */
parallel_for(size_t(0), N, [&] (const range<size_t>& r)
{
for (size_t objectID=r.begin(); objectID<r.end(); objectID++)
{
/* ignore if no triangle mesh or not enabled */
TriangleMesh* mesh = scene->getTriangleMeshSafe(objectID);
if (mesh == nullptr || !mesh->isEnabled() || mesh->numTimeSteps != 1)
continue;
BVH4* object = objects [objectID]; assert(object);
Builder* builder = builders[objectID]; assert(builder);
/* build object if it got modified */
#if !PROFILE
if (mesh->isModified())
#endif
builder->build(0,0);
/* create build primitive */
if (!object->bounds.empty())
refs[nextRef++] = BVH4BuilderTwoLevel::BuildRef(object->bounds,object->root);
}
});
/* fast path for single geometry scenes */
if (nextRef == 1) {
bvh->set(refs[0].node,refs[0].bounds(),numPrimitives);
return;
}
/* open all large nodes */
refs.resize(nextRef);
open_sequential(numPrimitives);
/* fast path for small geometries */
if (refs.size() == 1) {
bvh->set(refs[0].node,refs[0].bounds(),numPrimitives);
return;
}
/* compute PrimRefs */
prims.resize(refs.size());
//.........这里部分代码省略.........