diff --git a/CMake/Definitions.cmake b/CMake/Definitions.cmake index 25ad6d215..995821b8c 100644 --- a/CMake/Definitions.cmake +++ b/CMake/Definitions.cmake @@ -90,6 +90,7 @@ foreach( REMAP_KEYBOARD_KEYS DEVILUTIONX_DEFAULT_RESAMPLER STREAM_ALL_AUDIO_MIN_FILE_SIZE + DEVILUTIONX_DISPLAY_TEXTURE_FORMAT ) if(DEFINED ${def_name} AND NOT ${def_name} STREQUAL "") list(APPEND DEVILUTIONX_DEFINITIONS ${def_name}=${${def_name}}) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3fe9f51d9..21211674d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -106,6 +106,12 @@ option(MACOSX_STANDALONE_APP_BUNDLE "Generate a portable app bundle to use on ot cmake_dependent_option(DISABLE_TCP "Disable TCP multiplayer option" OFF "NOT NONET" ON) cmake_dependent_option(DISABLE_ZERO_TIER "Disable ZeroTier multiplayer option" OFF "NOT NONET" ON) +# Graphics options +if(NOT USE_SDL1) + set(DEVILUTIONX_DISPLAY_TEXTURE_FORMAT "SDL_PIXELFORMAT_RGB888" CACHE STRING "Texture format for DevilutionX textures when using the GPU renderer") + mark_as_advanced(DEVILUTIONX_DISPLAY_TEXTURE_FORMAT) +endif() + # Sound options option(NOSOUND "Disable sound support" OFF) option(DEVILUTIONX_RESAMPLER_SPEEX "Build with Speex resampler" ON) diff --git a/Source/storm/storm_svid.cpp b/Source/storm/storm_svid.cpp index 07fc9d498..f1371e357 100644 --- a/Source/storm/storm_svid.cpp +++ b/Source/storm/storm_svid.cpp @@ -285,7 +285,7 @@ bool SVidPlayBegin(const char *filename, int flags) if (renderer != nullptr) { int renderWidth = static_cast(SVidWidth); int renderHeight = static_cast(SVidHeight); - texture = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, renderWidth, renderHeight); + texture = SDLWrap::CreateTexture(renderer, DEVILUTIONX_DISPLAY_TEXTURE_FORMAT, SDL_TEXTUREACCESS_STREAMING, renderWidth, renderHeight); if (SDL_RenderSetLogicalSize(renderer, renderWidth, renderHeight) <= -1) { ErrSdl(); } diff --git a/Source/utils/display.cpp b/Source/utils/display.cpp index 9a904b8ca..41c1bae8e 100644 --- a/Source/utils/display.cpp +++ b/Source/utils/display.cpp @@ -388,7 +388,7 @@ void ReinitializeTexture() auto quality = StrCat(static_cast(*sgOptions.Graphics.scaleQuality)); SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, quality.c_str()); - texture = SDLWrap::CreateTexture(renderer, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth, gnScreenHeight); + texture = SDLWrap::CreateTexture(renderer, DEVILUTIONX_DISPLAY_TEXTURE_FORMAT, SDL_TEXTUREACCESS_STREAMING, gnScreenWidth, gnScreenHeight); } void ReinitializeIntegerScale()