Wiki Page Content

Differences between revisions 24 and 25
Revision 24 as of 2014-02-15 23:04:52
Size: 1885
Editor: mattbentley
Comment: Add example code
Revision 25 as of 2014-02-15 23:05:38
Size: 1835
Editor: mattbentley
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.

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.


CategoryAPI, CategoryRender

None: SDL_CreateTextureFromSurface (last edited 2017-08-11 23:59:53 by ChliHug)

(Page Info.)
Feedback
Please include your contact information if you'd like to receive a reply.
Submit