From 7fbd29eb1850bf739706ad69c10c9d6d49d8b7ac Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Wed, 28 May 2003 23:08:40 +0000 Subject: [PATCH] use only a supported texture format for movie textures --- .../arch/MovieTexture/MovieTexture_DShow.cpp | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/stepmania/src/arch/MovieTexture/MovieTexture_DShow.cpp b/stepmania/src/arch/MovieTexture/MovieTexture_DShow.cpp index 60d4f8e3de..1c19863d8c 100644 --- a/stepmania/src/arch/MovieTexture/MovieTexture_DShow.cpp +++ b/stepmania/src/arch/MovieTexture/MovieTexture_DShow.cpp @@ -316,9 +316,29 @@ void MovieTexture_DShow::CreateTexture() * Some way to figure this out dynamically would be nice, but it's probably * impossible. (For example, 24-bit textures may even be cheaper on pure * AGP cards; 16-bit requires a conversion.) */ - m_PixelFormat = FMT_RGB8; - if(TEXTUREMAN->GetTextureColorDepth() == 16) - m_PixelFormat = FMT_RGB5; + switch( TEXTUREMAN->GetTextureColorDepth() ) + { + default: + ASSERT(0); + case 16: + if( DISPLAY->SupportsTextureFormat(FMT_RGB5) ) + m_PixelFormat = FMT_RGB5; + else + m_PixelFormat = FMT_RGBA4; // everything supports RGBA4 + + break; + case 32: + if( DISPLAY->SupportsTextureFormat(FMT_RGB8) ) + m_PixelFormat = FMT_RGB8; + else if( DISPLAY->SupportsTextureFormat(FMT_RGBA8) ) + m_PixelFormat = FMT_RGBA8; + else if( DISPLAY->SupportsTextureFormat(FMT_RGB5) ) + m_PixelFormat = FMT_RGB5; + else + m_PixelFormat = FMT_RGBA4; // everything supports RGBA4 + break; + } + const PixelFormatDesc *pfd = DISPLAY->GetPixelFormatDesc(m_PixelFormat); m_img = SDL_CreateRGBSurfaceSane(SDL_SWSURFACE, m_iTextureWidth, m_iTextureHeight,