Create a window and default renderer.
Defined in <SDL3/SDL_render.h>
bool SDL_CreateWindowAndRenderer(const char *title, int width, int height, SDL_WindowFlags window_flags, SDL_Window **window, SDL_Renderer **renderer);
const char * | title | the title of the window, in UTF-8 encoding. |
int | width | the width of the window. |
int | height | the height of the window. |
SDL_WindowFlags | window_flags | the flags used to create the window (see SDL_CreateWindow()). |
SDL_Window ** | window | a pointer filled with the window, or NULL on error. |
SDL_Renderer ** | renderer | a pointer filled with the renderer, or NULL on error. |
(bool) Returns true on success or false on failure; call SDL_GetError() for more information.
You may only call this function from the main thread.
This function is available since SDL 3.1.3.
#include <SDL3/SDL.h>
int main(int argc, char *argv[])
{
SDL_Window *window;
SDL_Renderer *renderer;
SDL_Surface *surface;
SDL_Texture *texture;
SDL_Event event;
if (!SDL_Init(SDL_INIT_VIDEO)) {
"Couldn't initialize SDL: %s", SDL_GetError());
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, return 3;
}
if (!SDL_CreateWindowAndRenderer("Hello SDL", 320, 240, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
"Couldn't create window and renderer: %s", SDL_GetError());
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, return 3;
}
"sample.bmp");
surface = SDL_LoadBMP(if (!surface) {
"Couldn't create surface from image: %s", SDL_GetError());
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, return 3;
}
texture = SDL_CreateTextureFromSurface(renderer, surface);if (!texture) {
"Couldn't create texture from surface: %s", SDL_GetError());
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, return 3;
}
SDL_DestroySurface(surface);
while (1) {
SDL_PollEvent(&event);if (event.type == SDL_EVENT_QUIT) {
break;
}0x00, 0x00, 0x00, 0x00);
SDL_SetRenderDrawColor(renderer,
SDL_RenderClear(renderer);
SDL_RenderTexture(renderer, texture, NULL, NULL);
SDL_RenderPresent(renderer);
}
SDL_DestroyTexture(texture);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}