예제 #1
0
//------------------------------------------------------------------------
// 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;
		}
	}
}
예제 #3
0
파일: XActObj2.cpp 프로젝트: xahgo/tama
void XActObj::Destroy( void )
{
	// layer 삭제
	DestroyLayer();
}