tests/C_C++/sdl_render_to_texture.cpp
2024-07-22 19:37:02 +02:00

57 lines
1.7 KiB
C++

// @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;
}