|
Serwis Edukacyjny Nauczycieli w I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy
Wałaszek |
©2026 mgr Jerzy Wałaszek
|
SDL_CreateRGBSurface
| SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Użyj tej funkcji, aby przydzielić nową powierzchnię RGB.
SDL_Surface* SDL_CreateRGBSurface(Uint32 flags,
int width,
int height,
int depth,
Uint32 Rmask,
Uint32 Gmask,
Uint32 Bmask,
Uint32 Amask)
|
| 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. |
/* 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);
|
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.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.