Search code examples
c++sdlsdl-2

Change background of SDL2 window?


I can create a SDL2 window but I don't know how to change background color of this window.

My code:

#include "SDL.h"

SDL_Window *window;

void main()
{
    window = SDL_CreateWindow("TEST", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);

    SDL_Delay(3000);
}

How can I change background color of this window to black?


Solution

  • You should set drawing colour with SDL_SetRenderDrawColor and then use SDL_RenderClear:

    (code comes directly from SDL wiki)

    int main(int argc, char* argv[])
    {
            SDL_Window* window;
            SDL_Renderer* renderer;
    
            // Initialize SDL.
            if (SDL_Init(SDL_INIT_VIDEO) < 0)
                    return 1;
    
            // Create the window where we will draw.
            window = SDL_CreateWindow("SDL_RenderClear",
                            SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                            512, 512,
                            0);
    
            // We must call SDL_CreateRenderer in order for draw calls to affect this window.
            renderer = SDL_CreateRenderer(window, -1, 0);
    
            // Select the color for drawing. It is set to red here.
            SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
    
            // Clear the entire screen to our selected color.
            SDL_RenderClear(renderer);
    
            // Up until now everything was drawn behind the scenes.
            // This will show the new, red contents of the window.
            SDL_RenderPresent(renderer);
    
            // Give us time to see the window.
            SDL_Delay(5000);
    
            // Always be sure to clean up
            SDL_Quit();
            return 0;
    }