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_Surface

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.

Struktura zawiera tablicę pikseli używanych przy programowym tworzeniu grafiki.
Uint32 flags (użytek wewnętrzny).
SDL_PixelFormat* format format pikseli przechowywanych na powierzchni; zobacz na SDL_PixelFormat (tylko do odczytu).
int w, h szerokość i wysokość w pikselach (tylko do odczytu).
int pitch długość w bajtach wiersza pikseli (tylko do odczytu).
void* pixels wskaźnik tablicy pikseli; zobacz do Uwag (do odczytu i zapisu).
void* userdata dowolny wskaźnik, który możesz sobie ustawiać w swojej aplikacji (do odczytu i zapisu).
int locked używane z powierzchniami, które muszą być blokowane (użytek wewnętrzny).
void* lock_data używane z powierzchniami, które muszą być blokowane (użytek wewnętrzny).
SDL_Rect clip_rect struktura SDL_Rect, która obcina kopiowania pikseli do obszaru powierzchni, można ją ustawić za pomocą SDL_SetClipRect() (tylko do odczytu).
SDL_BlitMap* map informacje do szybkiego odwzorowywania pikseli przy kopiowaniu na inne powierzchnie (użytek wewnętrzny).
int refcount licznik odwołań, który może być zwiększany przez aplikację.

Przykładowy kod

/* Celem tego przykładu jest pokazanie sposobu edycji pikseli powierzchni za pomocą mikroprocesora,
   lecz normalnie raczej skorzystasz z SDL_FillRect(), aby wyczyścić zawartość powierzchni. */
void WipeSurface(SDL_Surface *surface)
{
    /* Operacja działa szybko na powierzchniach, które nie muszą być blokowane. */
    /* Po zablokowaniu można bezpiecznie uzyskać dostęp do pikseli. */
    SDL_LockSurface(surface);

    /* Zakładamy wartość koloru 0 - czarny. Użyj
       SDL_MapRGBA() do bardziej zaawansowanego odwzorowywania kolorów! */
    /* height razy pitch daje rozmiar całego bufora powierzchni. */
    SDL_memset(surface->pixels, 0, surface->h * surface->pitch);

    SDL_UnlockSurface(surface);
}

Uwagi

W większości powierzchni możesz uzyskać bezpośredni dostęp do pikseli.  Powierzchnie zoptymalizowane za pomocą SDL_SetSurfaceRLE() powinny być blokowane przez SDL_LockSurface() przed dostępem do pikseli. Gdy skończysz z pikselami, powierzchnia powinna być odblokowana za pomocą SDL_UnlockSurface() przed kopiowaniem.

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.