本文整理汇总了C++中DynArray::IsEmpty方法的典型用法代码示例。如果您正苦于以下问题:C++ DynArray::IsEmpty方法的具体用法?C++ DynArray::IsEmpty怎么用?C++ DynArray::IsEmpty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DynArray
的用法示例。
在下文中一共展示了DynArray::IsEmpty方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CacheResource
//.........这里部分代码省略.........
*( pCurrentTexturePixel++ ) = ( ( pixelBlock & ( 1 << 3 ) ) ? 255 : 0 );
*( pCurrentTexturePixel++ ) = ( ( pixelBlock & ( 1 << 2 ) ) ? 255 : 0 );
*( pCurrentTexturePixel++ ) = ( ( pixelBlock & ( 1 << 1 ) ) ? 255 : 0 );
*( pCurrentTexturePixel++ ) = ( ( pixelBlock & ( 1 << 0 ) ) ? 255 : 0 );
}
uint8_t pixelBlock = *pGlyphPixelBlock;
uint8_t mask = ( 1 << 7 );
while( remainingPixelCount != 0 )
{
*( pCurrentTexturePixel++ ) = ( ( pixelBlock & mask ) ? 255 : 0 );
mask >>= 1;
--remainingPixelCount;
}
}
}
// Store the character information in our character array.
Font::Character* pCharacter = characters.New();
HELIUM_ASSERT( pCharacter );
pCharacter->codePoint = static_cast< uint32_t >( codePoint );
pCharacter->imageX = penX;
pCharacter->imageY = penY;
pCharacter->imageWidth = static_cast< uint16_t >( glyphWidth );
pCharacter->imageHeight = static_cast< uint16_t >( glyphRowCount );
pCharacter->width = pGlyph->metrics.width;
pCharacter->height = pGlyph->metrics.height;
pCharacter->bearingX = pGlyph->metrics.horiBearingX;
pCharacter->bearingY = pGlyph->metrics.horiBearingY;
pCharacter->advance = pGlyph->metrics.horiAdvance;
HELIUM_ASSERT( textureSheets.GetSize() < UINT8_MAX );
pCharacter->texture = static_cast< uint8_t >( static_cast< uint8_t >( textureSheets.GetSize() ) );
// Update the pen location as well as the maximum line height as appropriate based on the current line height.
penX += static_cast< uint16_t >( glyphWidth ) + 1;
HELIUM_ASSERT( glyphRowCount <= UINT16_MAX );
lineHeight = Max< uint16_t >( lineHeight, static_cast< uint16_t >( glyphRowCount ) );
}
// Compress and store the last texture in the sheet.
if( !characters.IsEmpty() )
{
CompressTexture( pTextureBuffer, textureSheetWidth, textureSheetHeight, textureCompression, textureSheets );
}
// Done processing the font itself, so free some resources.
delete [] pTextureBuffer;
FT_Done_Face( pFace );
delete [] pFileData;
// Cache the font data.
size_t characterCountActual = characters.GetSize();
HELIUM_ASSERT( characterCountActual <= UINT32_MAX );
uint32_t characterCount = static_cast< uint32_t >( characterCountActual );
size_t textureCountActual = textureSheets.GetSize();
HELIUM_ASSERT( textureCountActual < UINT8_MAX );
uint8_t textureCount = static_cast< uint8_t >( textureCountActual );
BinarySerializer persistentDataSerializer;
for( size_t platformIndex = 0; platformIndex < static_cast< size_t >( Cache::PLATFORM_MAX ); ++platformIndex )
{
PlatformPreprocessor* pPreprocessor = pObjectPreprocessor->GetPlatformPreprocessor(
static_cast< Cache::EPlatform >( platformIndex ) );
if( !pPreprocessor )
{
continue;
}
persistentDataSerializer.SetByteSwapping( pPreprocessor->SwapBytes() );
persistentDataSerializer.BeginSerialize();
persistentDataSerializer << ascender;
persistentDataSerializer << descender;
persistentDataSerializer << height;
persistentDataSerializer << maxAdvance;
persistentDataSerializer << characterCount;
persistentDataSerializer << textureCount;
for( size_t characterIndex = 0; characterIndex < characterCountActual; ++characterIndex )
{
characters[ characterIndex ].Serialize( persistentDataSerializer );
}
persistentDataSerializer.EndSerialize();
Resource::PreprocessedData& rPreprocessedData = pResource->GetPreprocessedData(
static_cast< Cache::EPlatform >( platformIndex ) );
rPreprocessedData.persistentDataBuffer = persistentDataSerializer.GetPropertyStreamBuffer();
rPreprocessedData.subDataBuffers = textureSheets;
rPreprocessedData.bLoaded = true;
}
return true;
}
示例2: SynchronizeShaderParameters
/// Synchronize the shader parameter list with those provided by the selected shader variant.
///
/// @see SynchronizeFloatVectorParameters(), SynchronizeTextureParameters()
void Material::SynchronizeShaderParameters()
{
Shader* pShader = m_spShader;
if( !pShader )
{
m_float1Parameters.Clear();
m_float2Parameters.Clear();
m_float3Parameters.Clear();
m_float4Parameters.Clear();
m_textureParameters.Clear();
}
// Synchronize floating-point constant parameters.
Name parameterConstantBufferName = GetParameterConstantBufferName();
size_t existingFloat1Count = m_float1Parameters.GetSize();
size_t existingFloat2Count = m_float2Parameters.GetSize();
size_t existingFloat3Count = m_float3Parameters.GetSize();
size_t existingFloat4Count = m_float4Parameters.GetSize();
DynArray< Float1Parameter > newFloat1Parameters;
DynArray< Float2Parameter > newFloat2Parameters;
DynArray< Float3Parameter > newFloat3Parameters;
DynArray< Float4Parameter > newFloat4Parameters;
for( size_t shaderTypeIndex = 0; shaderTypeIndex < HELIUM_ARRAY_COUNT( m_shaderVariants ); ++shaderTypeIndex )
{
ShaderVariant* pShaderVariant = m_shaderVariants[ shaderTypeIndex ];
if( !pShaderVariant )
{
continue;
}
const ShaderConstantBufferInfoSet* pBufferSet = pShaderVariant->GetConstantBufferInfoSet( 0 );
if( !pBufferSet )
{
continue;
}
bool bCheckDuplicates =
( !newFloat1Parameters.IsEmpty() || !newFloat2Parameters.IsEmpty() || !newFloat3Parameters.IsEmpty() ||
!newFloat4Parameters.IsEmpty() );
const DynArray< ShaderConstantBufferInfo >& rBuffers = pBufferSet->buffers;
size_t bufferCount = rBuffers.GetSize();
for( size_t bufferIndex = 0; bufferIndex < bufferCount; ++bufferIndex )
{
const ShaderConstantBufferInfo& rBufferInfo = rBuffers[ bufferIndex ];
if( rBufferInfo.name != parameterConstantBufferName )
{
continue;
}
const DynArray< ShaderConstantInfo >& rConstants = rBufferInfo.constants;
size_t constantCount = rConstants.GetSize();
for( size_t constantIndex = 0; constantIndex < constantCount; ++constantIndex )
{
const ShaderConstantInfo& rConstantInfo = rConstants[ constantIndex ];
// Constants must be between 1 and 4 floating-point values.
uint16_t constantSize = rConstantInfo.usedSize;
if( constantSize < sizeof( float32_t ) || constantSize > sizeof( float32_t ) * 4 )
{
continue;
}
Name constantName = rConstantInfo.name;
size_t parameterIndex;
if( bCheckDuplicates )
{
size_t parameterCount = newFloat1Parameters.GetSize();
for( parameterIndex = 0; parameterIndex < parameterCount; ++parameterIndex )
{
if( newFloat1Parameters[ parameterIndex ].name == constantName )
{
break;
}
}
if( parameterIndex < parameterCount )
{
continue;
}
parameterCount = newFloat2Parameters.GetSize();
for( parameterIndex = 0; parameterIndex < parameterCount; ++parameterIndex )
{
if( newFloat2Parameters[ parameterIndex ].name == constantName )
{
break;
}
}
if( parameterIndex < parameterCount )
{
continue;
}
//.........这里部分代码省略.........