本文整理汇总了C++中Allocation::getPackedSize方法的典型用法代码示例。如果您正苦于以下问题:C++ Allocation::getPackedSize方法的具体用法?C++ Allocation::getPackedSize怎么用?C++ Allocation::getPackedSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Allocation
的用法示例。
在下文中一共展示了Allocation::getPackedSize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
Allocation *Allocation::createFromStream(Context *rsc, IStream *stream) {
// First make sure we are reading the correct object
RsA3DClassID classID = (RsA3DClassID)stream->loadU32();
if (classID != RS_A3D_CLASS_ID_ALLOCATION) {
rsc->setError(RS_ERROR_FATAL_DRIVER,
"allocation loading failed due to corrupt file. (invalid id)\n");
return nullptr;
}
const char *name = stream->loadString();
Type *type = Type::createFromStream(rsc, stream);
if (!type) {
return nullptr;
}
type->compute();
Allocation *alloc = Allocation::createAllocation(rsc, type, RS_ALLOCATION_USAGE_SCRIPT);
type->decUserRef();
// Number of bytes we wrote out for this allocation
uint32_t dataSize = stream->loadU32();
// 3 element vectors are padded to 4 in memory, but padding isn't serialized
uint32_t packedSize = alloc->getPackedSize();
if (dataSize != type->getPackedSizeBytes() &&
dataSize != packedSize) {
rsc->setError(RS_ERROR_FATAL_DRIVER,
"allocation loading failed due to corrupt file. (invalid size)\n");
ObjectBase::checkDelete(alloc);
ObjectBase::checkDelete(type);
return nullptr;
}
alloc->assignName(name);
if (dataSize == type->getPackedSizeBytes()) {
uint32_t count = dataSize / type->getElementSizeBytes();
// Read in all of our allocation data
alloc->data(rsc, 0, 0, count, stream->getPtr() + stream->getPos(), dataSize);
} else {
alloc->unpackVec3Allocation(rsc, stream->getPtr() + stream->getPos(), dataSize);
}
stream->reset(stream->getPos() + dataSize);
return alloc;
}