Użyj tej funkcji, aby utworzyć teksturę dla kontekstu
graficznego. Składnia
Parametry funkcji
renderer |
kontekst graficzny |
format |
jedna z enumerowanych wartości w SDL_PixelFormatEnum;
zobacz do Uwag. |
access |
jedna z enumerowanych wartości w SDL_TextureAccess;
zobacz do Uwag. |
w |
szerokość tekstury w pikselach |
h |
wysokość tekstury w pikselach |
Wartość zwracana
Zwraca wskaźnik do utworzonej tekstury lub NULL, jeśli żaden
kontekst graficzny nie był aktywny, format nie był obsługiwany lub
szerokość alby wysokość wychodzi poza zakres; wywołaj funkcję SDL_GetError(),
aby
otrzymać więcej informacji na temat błędu.
Przykładowy kod
/* Ruchomy Prostokąt */
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;
}
|
Parametr format może przyjąć jedną z następujących wartości:
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 (nazwa zastępcza) dla
ciągu bajtów RGBA danych koloru na bieżącej platformie
(>= SDL 2.0.5). |
SDL_PIXELFORMAT_ARGB32 |
alias dla ciągu bajtów ARGB danych koloru na
bieżącej platformie (>= SDL 2.0.5). |
SDL_PIXELFORMAT_BGRA32 |
alias dla ciągu bajtów BGRA danych koloru na
bieżącej platformie (>= SDL 2.0.5). |
SDL_PIXELFORMAT_ABGR32 |
alias dla ciągu bajtów ABGR danych koloru na
bieżącej platformie (>= SDL 2.0.5). |
SDL_PIXELFORMAT_YV12 |
tryb planarny: Y + V + U (3
płaszczyzny). |
SDL_PIXELFORMAT_IYUV |
tryb planarny: Y + U + V (3
płaszczyzny). |
SDL_PIXELFORMAT_YUY2 |
tryb spakowany: Y0+U0+Y1+V0 (1
płaszczyzna). |
SDL_PIXELFORMAT_UYVY |
tryb spakowany: U0+Y0+V0+Y1 (1
płaszczyzna). |
SDL_PIXELFORMAT_YVYU |
tryb spakowany: Y0+V0+Y1+U0 (1
płaszczyzna). |
SDL_PIXELFORMAT_NV12 |
tryb planarny: Y + U/V z przeplotem
(2 płaszczyzny) (>= SDL 2.0.4) |
SDL_PIXELFORMAT_NV21 |
tryb planarny: Y + V/U z przeplotem
(2 płaszczyzny) (>= SDL 2.0.4) |
Parametr access może przyjmować wartości:
SDL_TEXTUREACCESS_STATIC |
rzadka zmiana treści, nieblokowalna |
SDL_TEXTUREACCESS_STREAMING |
częsta zmiana treści, blokowalna |
SDL_TEXTUREACCESS_TARGET |
może być stosowana jako tekstura docelowa do
tworzenia grafiki |
Możesz określić metodę skalowania tekstury przez ustawienie
opcji SDL_HINT_RENDER_SCALE_QUALITY przed utworzeniem tekstury.
Powiązane funkcje
|