sdlCreateWindow function
Create a window with the specified dimensions and flags.
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_OCCLUDED
: window partially or completely obscured by another windowSDL_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 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.
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.
\param title the title of the window, in UTF-8 encoding. \param w the width of the window. \param h the height of the window. \param 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.
\threadsafety This function should only be called on the main thread.
\since This function is available since SDL 3.1.3.
\sa SDL_CreateWindowAndRenderer \sa SDL_CreatePopupWindow \sa SDL_CreateWindowWithProperties \sa SDL_DestroyWindow
extern SDL_DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, int w, int h, SDL_WindowFlags flags)
Implementation
Pointer<SdlWindow> sdlCreateWindow(String? title, int w, int h, int flags) {
final sdlCreateWindowLookupFunction = libSdl3.lookupFunction<
Pointer<SdlWindow> Function(
Pointer<Utf8> title, Int32 w, Int32 h, Uint64 flags),
Pointer<SdlWindow> Function(
Pointer<Utf8> title, int w, int h, int flags)>('SDL_CreateWindow');
final titlePointer = title != null ? title.toNativeUtf8() : nullptr;
final result = sdlCreateWindowLookupFunction(titlePointer, w, h, flags);
calloc.free(titlePointer);
return result;
}