Create a window with the specified dimensions and flags.
const char *title, int w, int h, Uint32 flags); SDL_Window* SDL_CreateWindow(
title | the title of the window, in UTF-8 encoding |
w | the width of the window |
h | the height of the window |
flags | 0, or one or more SDL_WindowFlags OR'd together |
Returns the window that was created or NULL on failure; call SDL_GetError() for more information.
flags
may be any of the following OR'd together:
SDL_WINDOW_FULLSCREEN
: fullscreen window at desktop resolutionSDL_WINDOW_OPENGL
: window usable with an OpenGL contextSDL_WINDOW_VULKAN
: window usable with a Vulkan instanceSDL_WINDOW_METAL
: window usable with a Metal instanceSDL_WINDOW_HIDDEN
: window is not visibleSDL_WINDOW_BORDERLESS
: no window decorationSDL_WINDOW_RESIZABLE
: window can be resizedSDL_WINDOW_MINIMIZED
: window is minimizedSDL_WINDOW_MAXIMIZED
: window is maximizedSDL_WINDOW_MOUSE_GRABBED
: window has grabbed mouse focusThe SDL_Window is implicitly shown if SDL_WINDOW_HIDDEN is not set.
On Apple's macOS, you must set the NSHighResolutionCapable Info.plist property to YES, otherwise you will not receive a High-DPI OpenGL canvas.
The window pixel size may differ from its window coordinate size if the window is on a high pixel density display. Use SDL_GetWindowSize() to query the client area's size in window coordinates, and SDL_GetWindowSizeInPixels() or SDL_GetRenderOutputSize() to query the drawable size in pixels. Note that the drawable size can vary after the window is created and should be queried again if you get an SDL_EVENT_WINDOW_PIXEL_SIZE_CHANGED event.
If the window is created with any of the SDL_WINDOW_OPENGL or SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the corresponding UnloadLibrary function is called by SDL_DestroyWindow().
If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.
If SDL_WINDOW_METAL is specified on an OS that does not support Metal, SDL_CreateWindow() will fail.
On non-Apple devices, SDL requires you to either not link to the Vulkan loader or link to a dynamic library version. This limitation may be removed in a future version of SDL.
This function is available since SDL 3.0.0.
// Example program:
// Using SDL2 to create an application window
#include "SDL.h"
#include <stdio.h>
int main(int argc, char* argv[]) {
// Declare a pointer
SDL_Window *window;
// Initialize SDL2
SDL_Init(SDL_INIT_VIDEO);
// Create an application window with the following settings:
window = SDL_CreateWindow("An SDL2 window", // window title
640, // width, in pixels
480, // height, in pixels
// flags - see below
SDL_WINDOW_OPENGL
);
// Check that the window was successfully created
if (window == NULL) {
// In the case that the window could not be made...
"Could not create window: %s\n", SDL_GetError());
printf(return 1;
}
// The window is open: could enter program loop here (see SDL_PollEvent())
3000); // Pause execution for 3000 milliseconds, for example
SDL_Delay(
// Close and destroy the window
SDL_DestroyWindow(window);
// Clean up
SDL_Quit();return 0;
}