pub unsafe extern "C" fn SDL_CreateWindow(
title: *const c_char,
w: c_int,
h: c_int,
flags: SDL_WindowFlags,
) -> *mut SDL_WindowExpand description
Create a window with the specified dimensions and flags.
The window size is a request and may be different than expected based on the desktop layout and window manager policies. Your application should be prepared to handle a window of any size.
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_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 focusSDL_WINDOW_INPUT_FOCUS: window has input focusSDL_WINDOW_MOUSE_FOCUS: window has mouse focusSDL_WINDOW_EXTERNAL: window not created by SDLSDL_WINDOW_MODAL: window is modalSDL_WINDOW_HIGH_PIXEL_DENSITY: window uses high pixel density back buffer if possibleSDL_WINDOW_MOUSE_CAPTURE: window has mouse captured (unrelated to MOUSE_GRABBED)SDL_WINDOW_ALWAYS_ON_TOP: window should always be above othersSDL_WINDOW_UTILITY: window should be treated as a utility window, not showing in the task bar and window listSDL_WINDOW_TOOLTIP: window should be treated as a tooltip and does not get mouse or keyboard focus, requires a parent windowSDL_WINDOW_POPUP_MENU: window should be treated as a popup menu, requires a parent windowSDL_WINDOW_KEYBOARD_GRABBED: window has grabbed keyboard inputSDL_WINDOW_VULKAN: window usable with a Vulkan instanceSDL_WINDOW_METAL: window usable with a Metal instanceSDL_WINDOW_TRANSPARENT: window with transparent bufferSDL_WINDOW_NOT_FOCUSABLE: window should not be focusable
The SDL_Window will be shown if SDL_WINDOW_HIDDEN is not set. If hidden at
creation time, SDL_ShowWindow() can be used to show it later.
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.
If you intend to use this window with an SDL_Renderer, you should use
SDL_CreateWindowAndRenderer() instead of this function, to avoid window
flicker.
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.
§Parameters
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 moreSDL_WindowFlagsOR’d together.
§Return value
Returns the window that was created or NULL on failure; call
SDL_GetError() for more information.
§Thread safety
This function should only be called on the main thread.
§Availability
This function is available since SDL 3.2.0.