Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Uaktualniono: 31.07.2022

©2022 mgr Jerzy Wałaszek
I LO w Tarnowie

Interfejs SDL2:

SDL_CreateRGBSurface

SPIS TREŚCI

Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.

SDL_CreateRGBSurface

Użyj tej funkcji, aby przydzielić nową powierzchnię RGB.

Składnia

SDL_Surface* SDL_CreateRGBSurface(Uint32 flags,
                                  int    width,
                                  int    height,
                                  int    depth,
                                  Uint32 Rmask,
                                  Uint32 Gmask,
                                  Uint32 Bmask,
                                  Uint32 Amask)

Parametry funkcji

flags znaczniki są nieużywane i powinny mieć wartość 0.
width szerokość powierzchni.
height wysokość powierzchni.
depth głębokość koloru w bitach; zobacz do Uwag.
Rmask czerwona maska dla pikseli.
Gmask zielona maska dla pikseli.
Bmask niebieska maska dla pikseli.
Amask maska przezroczystości alfa dla pikseli.

Wartość zwracana

Zwraca nową strukturę SDL_Surface lub NULL przy błędzie; wywołaj funkcję SDL_GetError(), aby otrzymać więcej informacji na temat błędu.

Przykładowy kod

/* Utwórz 32-bitową powierzchnię z bajtami dla każdego piksela w kolejności R,G,B,A,
   czego oczekuje OpenGL w teksturach */
    SDL_Surface *surface;
    Uint32 rmask, gmask, bmask, amask;

    /* SDL traktuje każdy piksel jako liczbę 32-bitową, więc nasze maski muszą zależeć
       od uporządkowania bajtów na danej platformie */
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
    rmask = 0xff000000;
    gmask = 0x00ff0000;
    bmask = 0x0000ff00;
    amask = 0x000000ff;
#else
    rmask = 0x000000ff;
    gmask = 0x0000ff00;
    bmask = 0x00ff0000;
    amask = 0xff000000;
#endif

    surface = SDL_CreateRGBSurface(0, width, height, 32,
                                   rmask, gmask, bmask, amask);
    if (surface == NULL)
    {
        SDL_Log("SDL_CreateRGBSurface() failed: %s", SDL_GetError());
        exit(1);
    }

    /* lub zastosuj standardowe maski głębokości: */
    surface = SDL_CreateRGBSurface(0, width, height, 32, 0, 0, 0, 0);

Uwagi

Jeśli głębokość koloru wynosi 4 lub 8 bitów, przydzielana jest pusta paleta dla powierzchni. Jeśli głębokość jest większa niż 8 bitów, ustawiony zostaje format pikseli przy użyciu parametrów [RGBA]mask.

Parametry [RGBA]mask są maskami bitowymi używanymi do wydobywania koloru z piksela. Na przykład maska Rmask o wartości FF000000 oznacza, że składowa czerwona jest przechowywana w najbardziej znaczącym bajcie. Uzycie zer dla masek RGB ustawia standardową wartość opartą na głębokości koloru. (np. SDL_CreateRGBSurface(0,w,h,32,0,0,0,0);) Jednakże użycie zera dla Amask powoduje ustawienie Amask na 0.

Standardowo powierzchnie z maską alfa są ustawiane do wtapiania tak, jak z

SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND);

Możesz to zmienić przez wywołanie SDL_SetSurfaceBlendMode() i wybranie innego trybu wtapiania blendMode.

Powiązane funkcje

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2022 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.