本文整理汇总了C++中U3DDataBlockWriter::getDataSizeWithChildDataBytes方法的典型用法代码示例。如果您正苦于以下问题:C++ U3DDataBlockWriter::getDataSizeWithChildDataBytes方法的具体用法?C++ U3DDataBlockWriter::getDataSizeWithChildDataBytes怎么用?C++ U3DDataBlockWriter::getDataSizeWithChildDataBytes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类U3DDataBlockWriter
的用法示例。
在下文中一共展示了U3DDataBlockWriter::getDataSizeWithChildDataBytes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: memset
//! Write one block to file stream. (private)
bool U3DFileWriter::_writeBlockToFileStream(U3DDataBlockWriter& block, std::ofstream& ofstream)
{
bool Success = false;
MLuint32 flushBufferSize = block.getNumTotalBytes();
mlU3D::DataBlockFundamental* flushBuffer = NULL;
ML_CHECK_NEW(flushBuffer, mlU3D::DataBlockFundamental[flushBufferSize]);
memset(flushBuffer, 0, flushBufferSize);
if (NULL != flushBuffer)
{
// Add Block type, Data size & Meta data Size
mlU3D::DataBlockFundamental flushBufferIndex = 0;
flushBuffer[flushBufferIndex] = block.blockType;
flushBufferIndex++;
flushBuffer[flushBufferIndex] = block.getDataSizeWithChildDataBytes();
flushBufferIndex++;
flushBuffer[flushBufferIndex] = block.getMetaDataSizeWithoutPadding();
flushBufferIndex++;
// Add Data
mlU3D::DataVector data = block.getData();
for (mlU3D::DataBlockFundamental i = 0; i < block.getDataSize(); i++)
{
flushBuffer[flushBufferIndex] = data[i];
flushBufferIndex++;
}
// Add Meta data
mlU3D::DataVector metaData = block.getMetaData();
for (mlU3D::DataBlockFundamental i = 0; i < block.getMetaDataSize(); i++)
{
flushBuffer[flushBufferIndex] = metaData[i];
flushBufferIndex++;
}
}
else
{
flushBufferSize = 0;
}
if ((0 != flushBufferSize) && (block.blockType != 0))
{
try
{
ofstream.write(reinterpret_cast<char*>(flushBuffer), flushBufferSize);
ofstream.flush();
Success = true;
}
catch (...)
{
// Ignore errors
}
}
ML_DELETE_ARRAY(flushBuffer);
return Success;
}