|
Size: 1885
Comment: Add example code
|
Size: 1835
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 24: | Line 24: |
| Uint32 rmask, gmask, bmask, amask; | Uint32 rmask, gmask, bmask, amask; |
| Line 26: | Line 26: |
| /* 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 rmask = 0xff000000; gmask = 0x00ff0000; bmask = 0x0000ff00; amask = 0x000000ff; #else rmask = 0x000000ff; gmask = 0x0000ff00; bmask = 0x00ff0000; amask = 0xff000000; #endif |
/* 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 rmask = 0xff000000; gmask = 0x00ff0000; bmask = 0x0000ff00; amask = 0x000000ff; #else rmask = 0x000000ff; gmask = 0x0000ff00; bmask = 0x00ff0000; amask = 0xff000000; #endif |
| Line 40: | Line 40: |
| SDL_Surface *surface = SDL_CreateRGBSurface(0, 640, 480, 32, rmask, gmask, bmask, amask); | SDL_Surface *surface = SDL_CreateRGBSurface(0, 640, 480, 32, rmask, gmask, bmask, amask); |
| Line 42: | Line 42: |
| if(surface == NULL) { fprintf(stderr, "CreateRGBSurface failed: %s\n", SDL_GetError()); exit(1); } |
if(surface == NULL) { fprintf(stderr, "CreateRGBSurface failed: %s\n", SDL_GetError()); exit(1); } |
| Line 48: | Line 48: |
| SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface); | SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface); |
| Line 50: | Line 50: |
| if(texture == NULL) { fprintf(stderr, "CreateTextureFromSurface failed: %s\n", SDL_GetError()); exit(1); } |
if(texture == NULL) { fprintf(stderr, "CreateTextureFromSurface failed: %s\n", SDL_GetError()); exit(1); } |
| Line 55: | Line 55: |
| SDL_FreeSurface(surface); surface = NULL; |
SDL_FreeSurface(surface); surface = NULL; |
SDL_CreateTextureFromSurface
Use this function to create a texture from an existing surface.
Contents
Syntax
SDL_Texture* SDL_CreateTextureFromSurface(SDL_Renderer* renderer,
SDL_Surface* surface)
Function Parameters
renderer |
the rendering context |
surface |
the SDL_Surface structure containing pixel data used to fill the texture |
Return Value
Returns the created texture or 0 on failure; call SDL_GetError() for more information.
Code Examples
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
rmask = 0xff000000;
gmask = 0x00ff0000;
bmask = 0x0000ff00;
amask = 0x000000ff;
#else
rmask = 0x000000ff;
gmask = 0x0000ff00;
bmask = 0x00ff0000;
amask = 0xff000000;
#endif
SDL_Surface *surface = SDL_CreateRGBSurface(0, 640, 480, 32, rmask, gmask, bmask, amask);
if(surface == NULL) {
fprintf(stderr, "CreateRGBSurface failed: %s\n", SDL_GetError());
exit(1);
}
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);
if(texture == NULL) {
fprintf(stderr, "CreateTextureFromSurface failed: %s\n", SDL_GetError());
exit(1);
}
SDL_FreeSurface(surface);
surface = NULL;
Remarks
The surface is not modified or freed by this function. The SDL_TextureAccess hint for the created texture is SDL_TEXTUREACCESS_STATIC.
