diff --git a/sdl_render_to_texture.cpp b/sdl_render_to_texture.cpp new file mode 100644 index 0000000..c3d9f04 --- /dev/null +++ b/sdl_render_to_texture.cpp @@ -0,0 +1,56 @@ +// @COMPILECMD g++ $@ $(pkg-config --libs SDL2_image SDL2_ttf) -ggdb +#include <SDL2/SDL.h> +#include <SDL2/SDL_image.h> +#include <iostream> + +// Window dimensions +const int WINDOW_WIDTH = 800; +const int WINDOW_HEIGHT = 600; + +int main() { + SDL_Init(SDL_INIT_VIDEO); + IMG_Init(IMG_INIT_JPG); + + SDL_Window* window = SDL_CreateWindow("Texture Example", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, + WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_SHOWN); + + SDL_Renderer* windowRenderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + + SDL_Texture* texture1 = IMG_LoadTexture(windowRenderer, "dog.jpg"); + SDL_Texture* texture2 = IMG_LoadTexture(windowRenderer, "dog2.jpg"); + SDL_Texture* texture3 = SDL_CreateTexture(windowRenderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, + WINDOW_WIDTH, WINDOW_HEIGHT); + + SDL_SetRenderTarget(windowRenderer, texture3); + SDL_SetRenderDrawColor(windowRenderer, 0, 0, 0, 255); + SDL_RenderClear(windowRenderer); + // + SDL_Rect r = {0, 0, 300, 300}; + SDL_RenderCopy(windowRenderer, texture1, nullptr, &r); + r.x = 300; + SDL_RenderCopy(windowRenderer, texture2, nullptr, &r); + + + SDL_SetRenderTarget(windowRenderer, nullptr); + SDL_SetRenderDrawColor(windowRenderer, 255, 255, 255, 255); + SDL_RenderClear(windowRenderer); + SDL_RenderCopy(windowRenderer, texture3, nullptr, nullptr); + + SDL_RenderPresent(windowRenderer); + + // Wait for user exit + bool quit = false; + SDL_Event event; + while (!quit) { + while (SDL_PollEvent(&event)) { + if (event.type == SDL_QUIT) { + quit = true; + } + } + } + + IMG_Quit(); + SDL_Quit(); + + return 0; +}