sgrsgsrg
2016-09-15 00:59:58 UTC
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;
}
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;
}