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: 22.02.2026

©2026 mgr Jerzy Wałaszek

Interfejs SDL2:

SDL_Surface

SPIS TREŚCI

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

SDL_Surface

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

SDL_BlitSurface
SDL_ConvertSurface
SDL_CreateRGBSurface
SDL_CreateRGBSurfaceFrom
SDL_FillRect
SDL_FillRects
SDL_FreeSurface
SDL_GetClipRect
SDL_GetColorKey
SDL_GetSurfaceAlphaMod
SDL_GetSurfaceBlendMode
SDL_GetSurfaceColorMod
SDL_LoadBMP_RW
SDL_LockSurface
SDL_LowerBlit
SDL_MUSTLOCK
SDL_SaveBMP_RW
SDL_SetClipRect
SDL_SetColorKey
SDL_SetSurfaceAlphaMod
SDL_SetSurfaceBlendMode
SDL_SetSurfaceColorMod
SDL_SetSurfacePalette
SDL_SetSurfaceRLE
SDL_SoftStretch
SDL_UnlockSurface

do podrozdziału  do strony 

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: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.