Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

SDL (Simple DirectMedia Layer)/Graphics/Rendering other image formats

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Rendering other image formats requires the use of another SDL library: SDL_image. However, the process of rendering different image formats is very much the same as rendering BMP images. In this section, we'll demonstrate how to render a PNG file onto a window. You can download the source code of this section in this GitLab repository. All source code is stored in this group. Importing the SDL_image library We'll import the SDL_image library, in wikibook.h, in the following fashion: #ifdef _WIN32 #include <SDL/SDL.h> /* Windows-specific SDL2 library */ #include <SDL_image.h> #else #include <SDL2/SDL.h> /* macOS- and GNU/Linux-specific */ #include <SDL2/SDL_image.h> #endif Initialising the image subsystem Right after initialising the SDL subsytems, we would need to initialise the image subsystem using IMG_Init. Given the parameter int flags, it returns flags on success. We'll want to render a PNG file so we would want to use the flag IMG_INIT_PNG. There are other flags like IMG_INIT_JPG (check IMG_Init for more information). To initialise multiple flags use the | OR operator, for example: const int FLAGS = IMG_INIT_PNG | IMG_INIT_JPG; You'll also have to use IMG_Quit to close the subsystem. /* Initialise SDL_image */ const int FLAGS = IMG_INIT_PNG; if (IMG_Init(FLAGS) != FLAGS) { fprintf(stderr, "SDL_image failed to initialise: %s\n", IMG_GetError()); return -1; } /* Automatically execute IMG_Quit at exit */ atexit(IMG_Quit); Since we're using SDL_image, we have to use IMG_GetError in place of SDL_GetError. Loading the image Loading the image is very simple, just use the IMG_Load function on a SDL_Surface. Like with IMG_Init, we must use IMG_GetError. wb->image = IMG_Load(WB_IMAGE_PATH); if (wb->image == NULL) { fprintf(stderr, "WikiBook failed to load image: %s\n", IMG_GetError()); return -1; } Remember, to make sure that the file path to the image is correct, i.e. WB_IMAGE_PATH! We're rendering a PNG image! . -