sdl2-config.cmake.in
author Sam Lantinga
Sun, 05 Apr 2020 08:58:47 -0700
changeset 13689 c3055b205671
parent 13683 60f1e9fb5957
child 13729 89a457159af4
permissions -rw-r--r--
Fixed bug 5015 - SDL_RenderReadPixels on DirectX 11.1 backend seems to be broken

Konrad

It appears that I cannot use SDL_RenderReadPixels on a bound framebuffer (SDL_Texture set as render target) as it simply results in gibberish data. However, drawing that framebuffer into the default target (window surface) does render it correctly. Other backends (OpenGL, software, Direct3D) do work fine.

It looks to me like D3D11_RenderReadPixels just gets the general backbuffer and not the current render target and its backbuffer.

Here is the patch which actually fetches the current render target and its underlying ID3D11Resource which is ID3D11Texture2D.
     1 # sdl2 cmake project-config input for ./configure scripts
     2 
     3 set(prefix "@prefix@") 
     4 set(exec_prefix "@exec_prefix@")
     5 set(libdir "@libdir@")
     6 set(SDL2_PREFIX "@prefix@")
     7 set(SDL2_EXEC_PREFIX "@prefix@")
     8 set(SDL2_LIBDIR "@libdir@")
     9 set(SDL2_INCLUDE_DIRS "@includedir@/SDL2")
    10 set(SDL2_LIBRARIES "-L${SDL2_LIBDIR} @SDL_RLD_FLAGS@ @SDL_LIBS@")
    11 string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
    12 
    13 if(NOT TARGET SDL2::SDL2)
    14   # Remove -lSDL2 as that is handled by CMake, note the space at the end so it does not replace e.g. -lSDL2main
    15   # This may require "libdir" beeing set (from above)
    16   string(REPLACE "-lSDL2 " "" SDL2_EXTRA_LINK_FLAGS "@SDL_RLD_FLAGS@ @SDL_LIBS@ ")
    17   string(STRIP "${SDL2_EXTRA_LINK_FLAGS}" SDL2_EXTRA_LINK_FLAGS)
    18   string(REPLACE "-lSDL2 " "" SDL2_EXTRA_LINK_FLAGS_STATIC "@SDL_RLD_FLAGS@ @SDL_STATIC_LIBS@ ")
    19   string(STRIP "${SDL2_EXTRA_LINK_FLAGS_STATIC}" SDL2_EXTRA_LINK_FLAGS_STATIC)
    20 
    21   add_library(SDL2::SDL2 SHARED IMPORTED)
    22   set_target_properties(SDL2::SDL2 PROPERTIES
    23     INTERFACE_INCLUDE_DIRECTORIES "@includedir@/SDL2"
    24     IMPORTED_LINK_INTERFACE_LANGUAGES "C"
    25     IMPORTED_LOCATION "@libdir@/${CMAKE_SHARED_LIBRARY_PREFIX}SDL2${CMAKE_SHARED_LIBRARY_SUFFIX}"
    26     INTERFACE_LINK_LIBRARIES "${SDL2_EXTRA_LINK_FLAGS}")
    27 
    28   add_library(SDL2::SDL2-static STATIC IMPORTED)
    29   set_target_properties(SDL2::SDL2-static PROPERTIES
    30     INTERFACE_INCLUDE_DIRECTORIES "@includedir@/SDL2"
    31     IMPORTED_LINK_INTERFACE_LANGUAGES "C"
    32     IMPORTED_LOCATION "@libdir@/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2${CMAKE_STATIC_LIBRARY_SUFFIX}"
    33     INTERFACE_LINK_LIBRARIES "${SDL2_EXTRA_LINK_FLAGS_STATIC}")
    34 
    35   add_library(SDL2::SDL2main STATIC IMPORTED)
    36   set_target_properties(SDL2::SDL2main PROPERTIES
    37     IMPORTED_LINK_INTERFACE_LANGUAGES "C"
    38     IMPORTED_LOCATION "@libdir@/${CMAKE_STATIC_LIBRARY_PREFIX}SDL2main${CMAKE_STATIC_LIBRARY_SUFFIX}")
    39 endif()