Create a texture from an existing surface.
SDL_Texture* SDL_CreateTextureFromSurface(SDL_Renderer *renderer, SDL_Surface *surface);
renderer | the rendering context |
surface | the SDL_Surface structure containing pixel data used to fill the texture |
Returns the created texture or NULL on failure; call SDL_GetError() for more information.
The surface is not modified or freed by this function.
The SDL_TextureAccess hint for the created texture is SDL_TEXTUREACCESS_STATIC
.
The pixel format of the created texture may be different from the pixel format of the surface. Use SDL_QueryTexture() to query the pixel format of the texture.
This function is available since SDL 3.0.0.
Uint32 rmask, gmask, bmask, amask;
/* SDL interprets each pixel as a 32-bit number, so our masks must depend
on the endianness (byte order) of the machine */
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
0xff000000;
rmask = 0x00ff0000;
gmask = 0x0000ff00;
bmask = 0x000000ff;
amask = #else
0x000000ff;
rmask = 0x0000ff00;
gmask = 0x00ff0000;
bmask = 0xff000000;
amask = #endif
0, 640, 480, 32, rmask, gmask, bmask, amask);
SDL_Surface *surface = SDL_CreateRGBSurface(
if (surface == NULL) {
"CreateRGBSurface failed: %s\n", SDL_GetError());
fprintf(stderr, 1);
exit(
}
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);
if (texture == NULL) {
"CreateTextureFromSurface failed: %s\n", SDL_GetError());
fprintf(stderr, 1);
exit(
}
SDL_DestroySurface(surface); surface = NULL;