SDL_CreateTexture
Use this function to create a texture for a rendering context.
Contents
Syntax
SDL_Texture* SDL_CreateTexture(SDL_Renderer* renderer,
Uint32 format,
int access,
int w,
int h)
Function Parameters
renderer |
the rendering context |
format |
one of the enumerated values in SDL_PixelFormatEnum; see Remarks for details |
access |
one of the enumerated values in SDL_TextureAccess; see Remarks for details |
w |
the width of the texture in pixels |
h |
the height of the texture in pixels |
Return Value
Returns a pointer to the created texture or NULL if no rendering context was active, the format was unsupported, or the width or height were out of range; call SDL_GetError() for more information.
Code Examples
#include "SDL.h"
/* Moving Rectangle */
int main(int argc, char *argv[])
{
SDL_Window *window;
SDL_Renderer *renderer;
SDL_Texture *texture;
SDL_Event event;
SDL_Rect r;
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s", SDL_GetError());
return 3;
}
window = SDL_CreateWindow("SDL_CreateTexture",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
1024, 768,
SDL_WINDOW_RESIZABLE);
r.w = 100;
r.h = 50;
renderer = SDL_CreateRenderer(window, -1, 0);
texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, 1024, 768);
while (1) {
SDL_PollEvent(&event);
if(event.type == SDL_QUIT)
break;
r.x=rand()%500;
r.y=rand()%500;
SDL_SetRenderTarget(renderer, texture);
SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00);
SDL_RenderClear(renderer);
SDL_RenderDrawRect(renderer,&r);
SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0x00);
SDL_RenderFillRect(renderer, &r);
SDL_SetRenderTarget(renderer, NULL);
SDL_RenderCopy(renderer, texture, NULL, NULL);
SDL_RenderPresent(renderer);
}
SDL_DestroyRenderer(renderer);
SDL_Quit();
return 0;
}
Remarks
format may be one of the following:
SDL_PIXELFORMAT_UNKNOWN |
|
SDL_PIXELFORMAT_INDEX1LSB |
|
SDL_PIXELFORMAT_INDEX1MSB |
|
SDL_PIXELFORMAT_INDEX4LSB |
|
SDL_PIXELFORMAT_INDEX4MSB |
|
SDL_PIXELFORMAT_INDEX8 |
|
SDL_PIXELFORMAT_RGB332 |
|
SDL_PIXELFORMAT_RGB444 |
|
SDL_PIXELFORMAT_RGB555 |
|
SDL_PIXELFORMAT_BGR555 |
|
SDL_PIXELFORMAT_ARGB4444 |
|
SDL_PIXELFORMAT_RGBA4444 |
|
SDL_PIXELFORMAT_ABGR4444 |
|
SDL_PIXELFORMAT_BGRA4444 |
|
SDL_PIXELFORMAT_ARGB1555 |
|
SDL_PIXELFORMAT_RGBA5551 |
|
SDL_PIXELFORMAT_ABGR1555 |
|
SDL_PIXELFORMAT_BGRA5551 |
|
SDL_PIXELFORMAT_RGB565 |
|
SDL_PIXELFORMAT_BGR565 |
|
SDL_PIXELFORMAT_RGB24 |
|
SDL_PIXELFORMAT_BGR24 |
|
SDL_PIXELFORMAT_RGB888 |
|
SDL_PIXELFORMAT_RGBX8888 |
|
SDL_PIXELFORMAT_BGR888 |
|
SDL_PIXELFORMAT_BGRX8888 |
|
SDL_PIXELFORMAT_ARGB8888 |
|
SDL_PIXELFORMAT_RGBA8888 |
|
SDL_PIXELFORMAT_ABGR8888 |
|
SDL_PIXELFORMAT_BGRA8888 |
|
SDL_PIXELFORMAT_ARGB2101010 |
|
SDL_PIXELFORMAT_RGBA32 |
alias for RGBA byte array of color data, for the current platform (>= SDL 2.0.5) |
SDL_PIXELFORMAT_ARGB32 |
alias for ARGB byte array of color data, for the current platform (>= SDL 2.0.5) |
SDL_PIXELFORMAT_BGRA32 |
alias for BGRA byte array of color data, for the current platform (>= SDL 2.0.5) |
SDL_PIXELFORMAT_ABGR32 |
alias for ABGR byte array of color data, for the current platform (>= SDL 2.0.5) |
SDL_PIXELFORMAT_YV12 |
planar mode: Y + V + U (3 planes) |
SDL_PIXELFORMAT_IYUV |
planar mode: Y + U + V (3 planes) |
SDL_PIXELFORMAT_YUY2 |
packed mode: Y0+U0+Y1+V0 (1 plane) |
SDL_PIXELFORMAT_UYVY |
packed mode: U0+Y0+V0+Y1 (1 plane) |
SDL_PIXELFORMAT_YVYU |
packed mode: Y0+V0+Y1+U0 (1 plane) |
SDL_PIXELFORMAT_NV12 |
planar mode: Y + U/V interleaved (2 planes) (>= SDL 2.0.4) |
SDL_PIXELFORMAT_NV21 |
planar mode: Y + V/U interleaved (2 planes) (>= SDL 2.0.4) |
access may be one of the following:
SDL_TEXTUREACCESS_STATIC |
changes rarely, not lockable |
SDL_TEXTUREACCESS_STREAMING |
changes frequently, lockable |
SDL_TEXTUREACCESS_TARGET |
can be used as a render target |
You can set the texture scaling method by setting SDL_HINT_RENDER_SCALE_QUALITY before creating the texture.