|
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_atomic_t
| SPIS TREŚCI |
Rozdział jest tłumaczeniem oryginalnej instrukcji dla biblioteki SDL2.
Struktura reprezentuje atomową (niepodzielną wątkowo) wartość całkowitą.
| int | value | atomowa wartość całkowita |
/* To jest prosty program zliczający klatki na sekundę
*
* Liczniki czasu w SDL pracują w osobnym wątku,
* zatem należy uważać, aby nie wpaść w wyścig danych
*/
SDL_atomic_t frames;
/* Oblicz i wyświetl średnią liczbę klatek w wybranym okresie */
Uint32 fps_timer_callback(Uint32 interval, void *data)
{
const float f = SDL_AtomicGet(&frames);
const float iv = (float)interval / 1000.0f;
printf("%.2f\tfps\n", f / iv);
/* Resetuj licznik klatek */
SDL_AtomicSet(&frames, 0);
return interval;
}
int main(int argc, char **argv)
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *win = SDL_CreateWindow("Licznik",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
640,
480,
0
);
SDL_Surface *screen = SDL_GetWindowSurface(win);
/* Nasz licznik będzie uruchamiany co pięć sekund w osobnym wątku */
SDL_AddTimer(5000, fps_timer_callback, NULL);
SDL_Event e;
while(1)
{
while (SDL_PollEvent(&e))
if (e.type == SDL_QUIT) goto quit;
SDL_FillRect(screen, NULL, 0xffffffff);
SDL_UpdateWindowSurface(win);
/* Dodaj klatkę */
SDL_AtomicAdd(&frames, 1);
}
quit:
SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}
|
![]() |
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.