OSDN Git Service

SDL_GetPerformanceFrequency サンプルコードを追加
[sdl2referencejp/sdl2referencejp.git] / SDL_GetPerformanceFrequency.html
index 5fdaa25..1711c1a 100644 (file)
 <code>Uint64 SDL_GetPerformanceFrequency(void)</code>\r
 <h2>\96ß\82è\92l</h2>\r
 \8aÂ\8b«\82É\88Ë\91\82µ\82½1\95b\82 \82½\82è\82Ì\83J\83E\83\93\83g\90\94\82ð\93¾\82é.\r
+<h2>\83T\83\93\83v\83\8b\83R\81[\83h</h2>\r
+<p>\r
+<code>\r
+<pre>\r
+#include "SDL.h"\r
+\r
+#define DEFAULT_RESOLUTION  1\r
+\r
+static int ticks = 0;\r
+\r
+static Uint32 SDLCALL\r
+ticktock(Uint32 interval, void *param)\r
+{\r
+    ++ticks;\r
+    return (interval);\r
+}\r
+\r
+static Uint32 SDLCALL\r
+callback(Uint32 interval, void *param)\r
+{\r
+    SDL_Log("\83^\83C\83} %d : \83p\83\89\83\81\81[\83^ = %d\n", interval, (int) (uintptr_t) param);\r
+    return interval;\r
+}\r
+\r
+int\r
+main(int argc, char *argv[])\r
+{\r
+    int i, desired;\r
+    SDL_TimerID t1, t2, t3;\r
+    Uint32 start32, now32;\r
+    Uint64 start, now;\r
+\r
+    /* \92Ê\8fí\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83\8d\83O\82ð\97L\8cø\82É\82·\82é */\r
+    SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);\r
+\r
+    if (SDL_Init(SDL_INIT_TIMER) &lt; 0) {\r
+        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL\82ð\8f\89\8aú\89»\82Å\82«\82È\82©\82Á\82½: %s\n", SDL_GetError());\r
+        return (1);\r
+    }\r
+\r
+    /* \83^\83C\83}\82ð\8aJ\8en\82·\82é */\r
+    desired = 0;\r
+    if (argv[1]) {\r
+        desired = atoi(argv[1]);\r
+    }\r
+    if (desired == 0) {\r
+        desired = DEFAULT_RESOLUTION;\r
+    }\r
+    t1 = SDL_AddTimer(desired, ticktock, NULL);\r
+\r
+    /* 10\95b\8aÔ\91Ò\82 */\r
+    SDL_Log("10\95b\8aÔ\91Ò\82Â\n");\r
+    SDL_Delay(10 * 1000);\r
+\r
+    /* \83^\83C\83}\82ð\92â\8e~\82·\82é */\r
+    SDL_RemoveTimer(t1);\r
+\r
+    /* \8c\8b\89Ê\82ð\95\\8e¦\82·\82é */\r
+    if (ticks) {\r
+        SDL_Log("\83^\83C\83}\95ª\89ð\94\: \97v\8b\81 = %d ms, \8eÀ\8dÛ = %f ms\n",\r
+                desired, (double) (10 * 1000) / ticks);\r
+    }\r
+\r
+    /* \95¡\90\94\82Ì\83^\83C\83}\82Ì\83e\83X\83g */\r
+    SDL_Log("\95¡\90\94\82Ì\83^\83C\83}\82Ì\83e\83X\83g...\n");\r
+    t1 = SDL_AddTimer(100, callback, (void *) 1);\r
+    if (!t1)\r
+        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"\83^\83C\83}1\82ð\90\90¬\82Å\82«\82È\82©\82Á\82½: %s\n", SDL_GetError());\r
+    t2 = SDL_AddTimer(50, callback, (void *) 2);\r
+    if (!t2)\r
+        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"\83^\83C\83}2\82ð\90\90¬\82Å\82«\82È\82©\82Á\82½: %s\n", SDL_GetError());\r
+    t3 = SDL_AddTimer(233, callback, (void *) 3);\r
+    if (!t3)\r
+        SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,"\83^\83C\83}3\82ð\90\90¬\82Å\82«\82È\82©\82Á\82½: %s\n", SDL_GetError());\r
+\r
+    /* 10\95b\8aÔ\91Ò\82 */\r
+    SDL_Log("10\95b\8aÔ\91Ò\82Â\n");\r
+    SDL_Delay(10 * 1000);\r
+\r
+    SDL_Log("\83^\83C\83}1\82ð\8dí\8f\9c\82µ, \82³\82ç\82É5\95b\8aÔ\91Ò\82Â\n");\r
+    SDL_RemoveTimer(t1);\r
+\r
+    SDL_Delay(5 * 1000);\r
+\r
+    SDL_RemoveTimer(t2);\r
+    SDL_RemoveTimer(t3);\r
+\r
+    start = SDL_GetPerformanceCounter();\r
+    for (i = 0; i &lt; 1000000; ++i) {\r
+        ticktock(0, NULL);\r
+    }\r
+    now = SDL_GetPerformanceCounter();\r
+    SDL_Log("100\96\9c\89ñ\82Ìticktock\8aÖ\90\94\82Ì\8cÄ\82Ñ\8fo\82µ\82É\82Í %f ms \82ð\97v\82µ\82½\n", (double)((now - start)*1000) / SDL_GetPerformanceFrequency());\r
+\r
+    SDL_Log("1\95b\82 \82½\82è\82Ì\8d\82\95ª\89ð\94\\83J\83E\83\93\83^: %"PRIu64"\n", (unsigned long long) SDL_GetPerformanceFrequency());\r
+    start32 = SDL_GetTicks();\r
+    start = SDL_GetPerformanceCounter();\r
+    SDL_Delay(1000);\r
+    now = SDL_GetPerformanceCounter();\r
+    now32 = SDL_GetTicks();\r
+    SDL_Log("SDL_Delay(1000) = %d ms, \8d\82\95ª\89ð\94\\82Å\82Í %f\n", (now32-start32), (double)((now - start)*1000) / SDL_GetPerformanceFrequency());\r
+\r
+    SDL_Quit();\r
+    return (0);\r
+}\r
+</pre>\r
+</code>\r
+</p>\r
 <h2>\8aÖ\98A\8d\80\96Ú(\8aÖ\90\94)</h2>\r
 <a href="SDL_GetPerformanceCounter.html">SDL_GetPerformanceCounter</a><br>\r
 <h2>SDL Wiki\82Ö\82Ì\83\8a\83\93\83N</h2>\r