OSDN Git Service

SDL_atomic_t サンプルコードを追加 https://wiki.libsdl.org/SDL_atomic_t?action=diff&rev1=2&rev2=3
authormaruhiro <maruhiro@bridge.ocn.ne.jp>
Wed, 13 Jun 2018 15:40:45 +0000 (00:40 +0900)
committermaruhiro <maruhiro@bridge.ocn.ne.jp>
Wed, 13 Jun 2018 15:40:45 +0000 (00:40 +0900)
SDL_atomic_t.html

index 95873ce..eac7e00 100644 (file)
 <table border="1" summary="SDL_atomic_t">\r
 <tr><td>int</td><td>value</td><td>\83A\83g\83~\83b\83N\90®\90\94\92l</td></tr>\r
 </table>\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+/* \82±\82ê\82ÍFPS\82ð\83J\83E\83\93\83g\82·\82é\83T\83\93\83v\83\8b\82Å\82 \82é\r
+ *\r
+ * SDL\83^\83C\83}\82Í\95Ê\82Ì\83X\83\8c\83b\83h\82Å\93®\82¢\82Ä\82¢\82é\r
+ * \82»\82Ì\82½\82ß\83f\81[\83^\8b£\8d\87\82ð\96h\82®\95K\97v\82Å\82 \82é\r
+ */\r
+SDL_atomic_t frames;\r
+\r
+/* \90Ý\92è\82³\82ê\82½\8aÔ\8au\82Å\95½\8bÏ\83t\83\8c\81[\83\80\83\8c\81[\83g\82Ì\8cv\8eZ\82Æ\95\\8e¦\82ð\8ds\82¤ */\r
+Uint32 fps_timer_callback(Uint32 interval, void *data)\r
+{\r
+        const float f = SDL_AtomicGet(&frames);\r
+        const float iv = (float)interval / 1000.0f;\r
+        printf("%.2f\tfps\n", f / iv);\r
+\r
+        /* \83t\83\8c\81[\83\80\83J\83E\83\93\83^\82ð\83\8a\83Z\83b\83g\82·\82é */\r
+        SDL_AtomicSet(&frames, 0);\r
+\r
+        return interval;\r
+}\r
+\r
+int main(int argc, char **argv)\r
+{\r
+        SDL_Init(SDL_INIT_EVERYTHING);\r
+        SDL_Window *win = SDL_CreateWindow("Counter",\r
+                        SDL_WINDOWPOS_CENTERED,\r
+                        SDL_WINDOWPOS_CENTERED,\r
+                        640,\r
+                        480,\r
+                        0\r
+                        );\r
+\r
+        SDL_Surface *screen = SDL_GetWindowSurface(win);\r
+\r
+        /* \83^\83C\83}\82Í\95Ê\83X\83\8c\83b\83h\82Å5\95b\8aÔ\8au\82Å\93®\82­ */\r
+        SDL_AddTimer(5000, fps_timer_callback, NULL);\r
+\r
+        SDL_Event e;\r
+        while(1) {\r
+                while (SDL_PollEvent(&e)) {\r
+                        if (e.type == SDL_QUIT) {\r
+                                goto quit;\r
+                        }\r
+                }\r
+                SDL_FillRect(screen, NULL, 0xffffffff);\r
+                SDL_UpdateWindowSurface(win);\r
+\r
+                /* \83t\83\8c\81[\83\80\90\94\82É1\82ð\89Á\82¦\82é */\r
+                SDL_AtomicAdd(&frames, 1);\r
+        }\r
+quit:\r
+        SDL_DestroyWindow(win);\r
+        SDL_Quit();\r
+        return 0;\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8fÚ\8d×</h2>\r
 <a href="SDL_atomic_t.html">SDL_atomic_t</a>\82Í\8d\\91¢\91Ì\82È\82Ì\82Å\8aÔ\88á\82Á\82Ä\89\89\8eZ\8eq\82Å\91\80\8dì\82·\82é\82±\82Æ\82ª\82È\82¢.\r
 \83A\83g\83~\83b\83N\91\80\8dì\8aÖ\90\94\82Å\82Í\90®\90\94\82Ì\92l\82Æ\82µ\82Ä\82±\82ê\82ð\8eg\82¤\95K\97v\82ª\82 \82é.\r