The SDL forums have moved to discourse.libsdl.org.
This is just a read-only archive of the previous forums, to keep old links working.


SDL Forum Index
SDL
Simple Directmedia Layer Forums
Target textures getting randomly swapped on window resize !!
sgrsgsrg


Joined: 06 Sep 2016
Posts: 18
Please, compile this little program and look what happens when you resize the window. Basically, i create two coloured textures, and i display only the second. For some reason SDL will toggle between textures A and B every time you resize the window !!! Shocked
You can even have more fun creating 4 textures (A, B, C, D) and doing renderCopy on D to see SDL switching between all of them from the last to the first.
Interestingly, it works only backwards, i mean if you have 4 target textures and telling sdl to display the 1st, it'll only display the 1st. If you tell to display the 2nd, it'll switch between 1st and 2nd...

WTF is happening rly...

Code:

#include <SDL.h>

int main(){
   SDL_Init(SDL_INIT_VIDEO);
   SDL_Window* window = SDL_CreateWindow("test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 200, 200, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);
   SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

   SDL_Texture* a = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_BGRA4444, SDL_TEXTUREACCESS_TARGET, 50, 50);
   SDL_SetRenderTarget(renderer, a);
   SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
   SDL_RenderFillRect(renderer, NULL);

   SDL_Texture* b = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_BGRA4444, SDL_TEXTUREACCESS_TARGET, 50, 50);
   SDL_SetRenderTarget(renderer, b);
   SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
   SDL_RenderFillRect(renderer, NULL);

   SDL_SetRenderTarget(renderer, NULL);
   SDL_Event e;

   while (1){
      SDL_PollEvent(&e);

      SDL_RenderCopy(renderer, b, NULL, NULL);

      SDL_RenderPresent(renderer);
   }
   return 0;
}
sgrsgsrg


Joined: 06 Sep 2016
Posts: 18
Got rid of the problem by regenerating all target textures on window resize.

Is there a way to avoid doing that ? This 'glitch' isnt documented anywhere, and there is no fun handling that