57 lines
1.7 KiB
C++
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;
|
|
}
|