Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

Do strony głównej I LO w Tarnowie

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

logo

Autor artykułu: mgr Jerzy Wałaszek

 

SDL2

Interfejs SDL2:

SDL_CreateTexture

Rozdziały:
     Interfejs SDL2 wg nazw
     Interfejs SDL2 wg kategorii

 

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2. Oryginał znajdziesz pod tym adresem: https://wiki.libsdl.org/CategoryAPI.

SDL_CreateTexture

Użyj tej funkcji, aby utworzyć teksturę dla kontekstu graficznego.

Składnia

SDL_Texture* SDL_CreateTexture(SDL_Renderer* renderer,
                               Uint32        format,
                               int           access,
                               int           w,
                               int           h)

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;
}

Uwagi

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

 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.