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 |
©2024 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 ©2024 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.