[ÀÌÀü] ¸ñÂ÷ [´ÙÀ½]

Simple DirectMedia Layer API »ç¿ëÇϱâ

ŸÀ̸Ó(Timers)

  • ÇöÀç ½Ã°£À» õºÐÀÇ 1ÃÊ ´ÜÀ§·Î ¾ò´Â´Ù

SDL_GetTicks() ´Â Áö³­ ÀÓÀÇÀÇ ½Ã°£À¸·ÎºÎÅÍ Áö±Ý±îÁö ¸î ¹Ð¸®¼¼ÄÁµå(milliseconds)°¡ Áö³µ´ÂÁö ¾Ë·ÁÁØ´Ù.

ÆÁ:
ÀϹÝÀûÀ¸·Î, °ÔÀÓÀ» ±¸ÇöÇÒ ¶§ ÇÁ·¹ÀÓ·üº¸´Ù´Â ½Ã°£¿¡ ±â¹ÝÇÏ¿© °ÔÀÓ»óÀÇ °´Ã¼¸¦ ¿òÁ÷ÀÌ´Â °ÍÀÌ ´õ ³´´Ù. ±×·¸°Ô ÇÏ¸é ºü¸¥ ½Ã½ºÅÛÀ̳ª ´À¸° ½Ã½ºÅÛÀ̳ª µ¿ÀÏÇÑ ¼Óµµ·Î °ÔÀÓÀ» Áñ±æ ¼ö ÀÖ´Ù.
¿¹Á¦:
#define TICK_INTERVAL    30

Uint32 TimeLeft(void)
{
    static Uint32 next_time = 0;
    Uint32 now;

    now = SDL_GetTicks();
    if ( next_time <= now ) {
        next_time = now+TICK_INTERVAL;
        return(0);
    }
    return(next_time-now);
}
  • ÁöÁ¤µÈ ¹Ð¸®¼¼ÄÁµå¸¸Å­ ±â´Ù¸®±â

SDL_Delay() ´Â ¸î ¹Ð¸®¼¼ÄÁµå¸¸Å­ ±â´Ù¸®°Ô ÇÑ´Ù.

SDLÀÌ Áö¿øÇÏ´Â ¿î¿µÃ¼Á¦µéÀº ¸ÖƼŽºÅ· ¿î¿µÃ¼Á¦À̱⠶§¹®¿¡, ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¿ä±¸µÈ ½Ã°£¸¸Å­ Á¤È®È÷ Áö¿¬µÈ´Ù´Â º¸ÀåÀ» ÇÒ ¼ö ¾ø´Ù. ÀÌ ÇÔ¼ö´Â ƯÁ¤ ½Ã°£¿¡ ´Ù½Ã ÁøÇàµÇ¾î¾ß ÇÏ´Â °æ¿ìº¸´Ù´Â Àá±ñµ¿¾È Á¤ÁöÇØÀÖ¾î¾ß ÇÏ´Â °æ¿ì¿¡ ´õ ÀûÇÕÇÏ´Ù.

ž:
´ëºÎºÐÀÇ ¿î¿µÃ¼Á¦µéÀº ¾à 10ms Á¤µµÀÇ ½ºÄÉÁÙ·¯ ½Ã°£Á¶°¢(timeslice)À» °¡Áø´Ù. SDL_Delay(1) ´Â ÇöÀçÀÇ ½Ã°£Á¶°¢¿¡ ÇØ´çÇÏ´Â ½Ã°£Á¶°¢À» Èñ»ýÇÏ¿© ´Ù¸¥ ¾²·¹µå°¡ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï »ç¿ëµÈ´Ù. ÀÌ ÇÔ¼ö´Â ¾ÆÁÖ »¡¸® µ¹¾Æ°¡´Â ·çÇÁÀÇ ¾²·¹µå°¡ ÀÖÀ» ¶§ ´Ù¸¥ ¾²·¹µå(¿Àµð¿À °°Àº)µµ ÇÔ²² ½ÇÇàµÇ¾î¾ß ÇÑ´Ù¸é Áß¿äÇÏ´Ù.
¿¹Á¦:
{
    while ( game_running ) {
        UpdateGameState();
        SDL_Delay(TimeLeft());
    }
}
 

[ÀÌÀü] ¸ñÂ÷ [´ÙÀ½]