//------------------------------------------------------------------------ // Initialize the detail layer. // ---------------------------------------------------------------------- // Param -> IN: // UINT: Size of the alphamap. //------------------------------------------------------------------------ HRESULT etDetailLayer::Initialize( UINT nMapSize ) { HRESULT hr; void* pBits; int nPitch; // Clean the old data. DestroyLayer(); // Create the temp buffer. m_pTempData = new UCHAR[nMapSize*nMapSize*4]; if( !m_pTempData ) return FLY_OUTOFMEMORY; m_nMapSize = nMapSize; memset( m_pTempData,0,nMapSize*nMapSize*4 ); // Get the resourceManager. FlyResourceManager* pResMgr = FlyKernel::Instance().GetResourceManager(); m_pTexture = pResMgr->AddNullTexture( "et-DetailLayer" ); if( !m_pTexture ) return FLY_OUTOFMEMORY; // Create the texture for detail layer. hr = m_pTexture->Create2DTexture( nMapSize,nMapSize,TU_DEFAULT,PFT_A8R8G8B8,1 ); if( FAILED(hr) ) return hr; m_pTexture->Access2DMap( 0,TMA_WRITEONLY,&pBits,&nPitch ); memcpy( pBits,m_pTempData,nMapSize*nMapSize*4 ); m_pTexture->Unaccess2DMap( 0 ); return FLY_OK; }
//============================================================================= void FSteamVRHMD::UpdateSplashScreen() { FTexture2DRHIRef Texture = (bSplashShowMovie && SplashMovie.IsValid()) ? SplashMovie : SplashTexture; if (bSplashIsShown && Texture.IsValid()) { FLayerDesc LayerDesc; LayerDesc.Flags = ELayerFlags::LAYER_FLAG_TEX_NO_ALPHA_CHANNEL; LayerDesc.PositionType = ELayerType::TrackerLocked; LayerDesc.Texture = Texture; LayerDesc.UVRect = FBox2D(SplashOffset, SplashScale); LayerDesc.Transform.SetTranslation(FVector(500.0f, 0.0f, 0.0f)); LayerDesc.QuadSize = FVector2D(800.0f, 450.0f); if (SplashLayerHandle) { SetLayerDesc(SplashLayerHandle, LayerDesc); } else { SplashLayerHandle = CreateLayer(LayerDesc); } } else { if (SplashLayerHandle) { DestroyLayer(SplashLayerHandle); SplashLayerHandle = 0; } } }
void XActObj::Destroy( void ) { // layer 삭제 DestroyLayer(); }