MCPcopy Create free account
hub / github.com/carbonengine/trinity / CreateEmptyTexture

Method CreateEmptyTexture

trinity/Resources/TriTextureRes.cpp:981–1029  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

979}
980
981bool TriTextureRes::CreateEmptyTexture( uint32_t width, uint32_t height, uint32_t mipCount, Tr2RenderContextEnum::PixelFormat format )
982{
983 USE_MAIN_THREAD_RENDER_CONTEXT();
984
985 if( !width || !height )
986 {
987 return false;
988 }
989
990 DestroyOwnTexture();
991
992 Tr2BitmapDimensions bmp( width, height, mipCount, format );
993
994 auto trueMipLevelCount = bmp.GetTrueMipCount();
995 unsigned memoryUse = 0;
996
997 std::vector<uint8_t> empty;
998 empty.resize( bmp.GetMipSize( 0 ), 0 );
999
1000 std::vector<Tr2SubresourceData> initData( trueMipLevelCount );
1001
1002 for( unsigned i = 0; i != trueMipLevelCount; ++i )
1003 {
1004 Tr2SubresourceData& srd = initData[i];
1005 srd.m_sysMem = empty.data();
1006 srd.m_sysMemSlicePitch = bmp.GetMipSize( i );
1007 srd.m_sysMemPitch = bmp.GetMipPitch( i );
1008 memoryUse += srd.m_sysMemSlicePitch;
1009 }
1010
1011 CR_RETURN_VAL( m_ownTexture.Create(
1012 bmp,
1013 Tr2GpuUsage::SHADER_RESOURCE,
1014 Tr2CpuUsage::READ | Tr2CpuUsage::WRITE,
1015 initData.data(),
1016 renderContext ),
1017 false );
1018
1019 *static_cast<Tr2BitmapDimensions*>( this ) = m_ownTexture.GetDesc();
1020
1021 m_memoryUse = memoryUse;
1022 m_originalMemoryUse = memoryUse;
1023
1024 CCP_STATS_ADD( textureResBytes, m_memoryUse );
1025 SetTexture( m_ownTexture );
1026 SetPrepared( true );
1027 SetGood( true );
1028 return true;
1029}
1030
1031BlueStdResult TriTextureRes::CreateFromTexture( TriTextureRes* texture )
1032{

Callers

nothing calls this directly

Calls 3

GetTrueMipCountMethod · 0.80
GetMipSizeMethod · 0.80
CreateMethod · 0.45

Tested by

no test coverage detected