게임 제작상의 루프 코딩은 대부분 아래와 같을 것이다.

  1. MSG msg;  
  2. while (1)  
  3. {  
  4.     if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))  
  5.     { 
  6.         if(msg.message  ==  WM_QUIT) break;  
  7.         DispatchMessage(&msg);  
  8.     } 
  9.     else 
  10.     { 
  11.         Loop();  
  12.     }         
  13. }  


여기서 while(1) 마저도 아깝다면..

  1. LOOP_ING:  
  2.     if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))  
  3.     { 
  4.         if(msg.message  ==  WM_QUIT) goto LOOP_EXIT;  
  5.         DispatchMessage(&msg);  
  6.     } 
  7.     else 
  8.     { 
  9.         Loop();  
  10.     }         
  11.      
  12.     goto LOOP_ING;  
  13. LOOP_EXIT:  

이렇게 해라. 이렇게 하면

  1. 00411AA3  mov         eax,1  
  2. 00411AA8  test        eax,eax  
  3. 00411AAA  je          WinMain+6Fh (411AEFh)  

의 클럭수 (대략 14클럭)를 줄일 수 있게 된다.

단, goto 가 보기 싫은 코드의 예술가가 아니라면.. 말이다.

Posted by 명혀니
,