The SDL forums have moved to discourse.libsdl.org.
This is just a read-only archive of the previous forums, to keep old links working.


SDL Forum Index
SDL
Simple Directmedia Layer Forums
Setting up VSYNC with SDL_CreateWindowAndRenderer
mbabuskov


Joined: 08 Feb 2015
Posts: 29
Hello,

I'm running my game full screen using the desktop resolution with SDL_CreateWindowAndRenderer. This all works fine.

I would like to add a VSYNC option, so that the players can turn it on if they desire. However, the docs for SDL_CreateWindowAndRenderer show that only Window flags can be supplied.

How can I create a fullscreen game with VSYNC turned on?

Thanks.
mr_tawan


Joined: 13 Jan 2014
Posts: 161
You can use `SDL_CreateWindow()` and `SDL_CreateRenderer()` to archive the same thing.

Code:
window = SDL_CreateWindow(
        "An SDL2 window",                  // window title
        SDL_WINDOWPOS_UNDEFINED,           // initial x position
        SDL_WINDOWPOS_UNDEFINED,           // initial y position
        640,                               // width, in pixels
        480,                               // height, in pixels
        SDL_WINDOW_FULLSCREEN                // flags - see below
    );

renderer = SDL_CreateRenderer(window , -1, SDL_RENDERER_PRESENTVSYNC);

mbabuskov


Joined: 08 Feb 2015
Posts: 29
mr_tawan wrote:
You can use `SDL_CreateWindow()` and `SDL_CreateRenderer()` to archive the same thing.

Code:
window = SDL_CreateWindow(
        "An SDL2 window",                  // window title
        SDL_WINDOWPOS_UNDEFINED,           // initial x position
        SDL_WINDOWPOS_UNDEFINED,           // initial y position
        640,                               // width, in pixels
        480,                               // height, in pixels
        SDL_WINDOW_FULLSCREEN                // flags - see below
    );

renderer = SDL_CreateRenderer(window , -1, SDL_RENDERER_PRESENTVSYNC);



That code creates a 640x480 pixel window. I want to run the game in fullscreen.

Thanks.
mbabuskov


Joined: 08 Feb 2015
Posts: 29
mr_tawan wrote:
You can use `SDL_CreateWindow()` and `SDL_CreateRenderer()` to archive the same thing.

Code:
window = SDL_CreateWindow(
        "An SDL2 window",                  // window title
        SDL_WINDOWPOS_UNDEFINED,           // initial x position
        SDL_WINDOWPOS_UNDEFINED,           // initial y position
        640,                               // width, in pixels
        480,                               // height, in pixels
        SDL_WINDOW_FULLSCREEN                // flags - see below
    );

renderer = SDL_CreateRenderer(window , -1, SDL_RENDERER_PRESENTVSYNC);



I just discovered that you cannot edit forum posts, so I'll be more careful.

That code makes the game run at 640x480 resolution. I want to keep the native desktop resolution. How can I achieve that?
mr_tawan


Joined: 13 Jan 2014
Posts: 161
I supposed you already have the code that use SDL_CreateWindowAndRenderer() already. You can use the same w, h, and Window flag parameters with the SDL_CreateWindow(). Then create the renderer with SDL_CreateRenderer().
mbabuskov


Joined: 08 Feb 2015
Posts: 29
mr_tawan wrote:
I supposed you already have the code that use SDL_CreateWindowAndRenderer() already. You can use the same w, h, and Window flag parameters with the SDL_CreateWindow(). Then create the renderer with SDL_CreateRenderer().


The whole point was that I did not know what to use for X and Y values because I wanted current desktop resolution. I could get it with SDL_GetDesktopDisplayMode, but if user has multiple monitors I don't know on which monitor will the game show up.

However, I discovered SDL_WINDOW_FULLSCREEN_DESKTOP which actually does what I want. So, problem is solved.