U E D R S I H C RSS
ID
Password
Join
역사는 ë˜í’€ì´ëœë‹¤. ì´ëŠ” 역사가 ìž˜ëª»ëœ ì´ìœ ì˜ 하나. ―C.D.



Contents

1 개요
2 glSDLì˜ ë‚´ë¶€ 구조 요약
3 참고사항
4 비디오 초기화
5 하드웨어 서피스 사용하기
6 서피스 픽셀í¬ë©§
7 서피스 ì†ì„±
8 잠금/해제
9 블리팅(blitting)
10 기타 주ì˜ì‚¬í•­
  • ì›ë¬¸ë§í¬ : [http]http://icps.u-strasbg.fr/~marchesin/sdl/glsdl.html
  • ì›ë¬¸ê³¼ ê¸€ì´ ë˜‘ê°™ì§€ëŠ” 않다는 ì ì„ ë°íž™ë‹ˆë‹¤. ì ë‹¹ížˆ 바꾸고 줄였습니다.

1 개요 #

  • 여기서 언급한 방법ë§ê³ ë„ 다른 ë°©ë²•ì´ ì¡´ìž¬í•  수 있습니다.
  • 어쨌든 잘못 사용할 경우 실제 소프트웨어 ëª¨ë“œë³´ë‹¤ë„ ëŠë ¤ì§ˆ 수 있다는 ì ì„ 알아ë‘시기 ë°”ëžë‹ˆë‹¤.
  • redpixelìƒê° : 현재 ë²„ì „ì˜ glSDLì€ ì†ŒìŠ¤ë¥¼ ë³´ë©´ ë‚´ë¶€ì ìœ¼ë¡œ "íƒìŠ¤ì³ ê³µê°„ 최ì í™”"를 하지 않습니다. 즉, 정사ê°í˜• íƒìФì³ê·¸ë¦¼ì•ˆì— ê°ê°ì˜ 스프ë¼ì´íŠ¸ë¥¼ 잘 배치하고 ì´ë¥¼ 올린 후 sub í…스ì³ë¥¼ 만들어 쓰는 ë°©ë²•ì´ ë¹„ë””ì˜¤ 메모리를 사용하는 íš¨ìœ¨ìƒ ë” ìœ ë¦¬í•©ë‹ˆë‹¤. ì•„ë§ˆë„ glSDLì€ ê°„ë‹¨ížˆ ê°€ì†ì„±ëŠ¥ì„ í…ŒìŠ¤íŠ¸í•˜ê¸° 위한 ìš©ë„외ì—는 실제 ì™„ì„±ëœ ê²Œìž„ì„ ë§Œë“¤ê¸°ì—는 무리가 ìžˆì„ ê±°ë¼ ìƒê°í•©ë‹ˆë‹¤.

2 glSDLì˜ ë‚´ë¶€ 구조 요약 #

  • glSDLì€ SDLì˜ ë¹„ë””ì˜¤ 백엔드로서 OpenGLì„ ì‚¬ìš©í•©ë‹ˆë‹¤.
  • 하드웨어 ê°€ì†ì— 따른 성능향ìƒì„ 얻기위해 ì„œí”¼ìŠ¤ë“¤ì€ ë¸”ë¦¬íŠ¸ë˜ê¸°ì „ì— ëª¨ë‘ GL í…스ì³ë¡œ 변환ë©ë‹ˆë‹¤. (그러므로 수정하거나 ìƒì„±í•˜ëŠ”ë° ìžˆì–´ì„œ ìƒë‹¹ížˆ ë§Žì€ ì‹¤í–‰ë¹„ìš©ì´ ë“­ë‹ˆë‹¤) -> 그러므로 서피스 ë‚´ìš©ì„ ê³ ì¹˜ëŠ” ê²ƒì€ ìžì£¼ 하지 않는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
  • 사용하는 서피스 í¬ë©§ ë˜í•œ 어플리케ì´ì…˜ ì†ë„ì— ì˜í–¥ì„ 준다는 ì ë„ 알아ë‘시기 ë°”ëžë‹ˆë‹¤.

3 참고사항 #

  • 소프트웨어 서피스 : ë‹¤ìŒ ì¡°ê±´ì´ trueì¸ ì„œí”¼ìŠ¤ë¥¼ ë§í•©ë‹ˆë‹¤.
    (surface->flags & SDL_HWSURFACE) == SDL_SWSURFACE
    
  • 하드웨어 서피스 : ë‹¤ìŒ ì¡°ê±´ì´ trueì¸ ì„œí”¼ìŠ¤ë¥¼ ë§í•©ë‹ˆë‹¤.
    (surface->flags & SDL_HWSURFACE) == SDL_HWSURFACE
    
  • glSDLìƒì—서 screenì€ ë¬´ì¡°ê»€ 하드웨어 서피스입니다.

4 비디오 초기화 #

하드웨어 ê°€ì†ì„ 하려면 서피스를 ìƒì„±í• ë•Œ ê°€ê¸‰ì  í•˜ë“œì›¨ì–´ 서피스로 만드는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ë”블버í¼ë§ì„ 쓰는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.(깜박임 현ìƒë•Œë¬¸) 다ìŒê³¼ ê°™ì´ ì´ˆê¸°í™”í•˜ëŠ” ê²ƒì´ ìµœì„ ì˜ ë°©ë²•ìž…ë‹ˆë‹¤. (bpp로 0ì´ì™¸ì— 8, 15, 16, 24, 32ê°€ 가능합니다)
SDL_SetVideoMode(640, 480, 0, SDL_DOUBLEBUF);

5 하드웨어 서피스 사용하기 #

다ìŒê³¼ ê°™ì´ SDL_HWSURFACEì˜µì…˜ì„ ë„£ì–´ì„œ ìƒì„±í•œë‹¤.
surface = SDL_CreateRGBSurface(SDL_HWSURFACE, width, height, bpp, rmask, gmask, bmask, amask);
소프트웨어 서피스를 사용하면 ë§Žì´ ëŠë ¤ì§‘니다. 그리고 ê°€ì†ì•ˆë˜ëŠ” 비디오 메모리 ì‚¬ìš©ì€ ì•ˆì“°ë‹ˆë§Œ 못합니다(ì°¨ë¼ë¦¬ 하드디스í¬ì—서 ì½ì–´ì„œ 바로 ë„우는게 빠를 ì •ë„입니다)

6 서피스 픽셀í¬ë©§ #

다ìŒê³¼ ê°™ì´ í˜„ìž¬ 비디오 픽셀í¬ë©§ì— 맞게 변경할 수 있습니다.
SDL_Surface * tmp;
tmp = SDL_DisplayFormat(surface);
SDL_FreeSurface(surface);
surface = tmp;
ë˜ëŠ”
SDL_Surface * tmp;
tmp = SDL_DisplayFormatAlpha(surface);
SDL_FreeSurface(surface);
surface = tmp;
스프ë¼ì´íЏ ê°™ì€ ê²ƒì„ êµ¬í˜„í•˜ë ¤ë©´ ì´ë ‡ê²Œ 모든 ì„œí”¼ìŠ¤ì˜ í”½ì…€í¬ë©§ì„ 맞춰주는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. (그렇지 않으면 매번 업로드마다 í¬ë©§ë³€í™˜ì„ 해야하므로 ì†ë„ê°ì†Œìš”소가 ë©ë‹ˆë‹¤)

7 서피스 ì†ì„± #

  • glSDLì—서는 RLE ì†ì„±ì„ 사용하지 않습니다. (ì´ê²ƒì„ 사용하면 ì—„ì²­ ëŠë ¤ì§€ë‹ˆ 주ì˜!)
  • 서피스 ì „ì²´ ì•ŒíŒŒê°’ì€ ì–¸ì œë“ ì§€ ìžìœ ë¡­ê²Œ 사용가능합니다.
  • 픽셀당 알파ì ìš©ì€ 그리 ë§Žì€ ì‹¤í–‰ë¶€í•˜ë¥¼ 주지 않습니다(메모리 대역í­ì— ê´€ë ¨ëœ ë¶€í•˜ì¼ ë¿ìž…니다. RGB보다는 RGBAê°€ 25%ë” ë§Žì´ ì‚¬ìš©í•˜ê²Œ ë˜ê² ì£ )
  • glSDLì—서 컬러키(투명색)ê¸°ëŠ¥ì€ í”½ì…€ë‹¹ 알파ì ìš©ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ì—¬ 구현ë©ë‹ˆë‹¤.
  • 알파 서피스와 비알파 ì„œí”¼ìŠ¤ê°„ì˜ ì„±ëŠ¥ì°¨ëŠ” ê±°ì˜ ì—†ìŠµë‹ˆë‹¤.

8 잠금/해제 #

  • 하드웨어 ì„œí”¼ìŠ¤ì˜ ìž ê¸ˆ/해제는 피하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 하드웨어 ì„œí”¼ìŠ¤ì˜ ìž ê¸ˆ í’€ê¸°ê¸°ëŠ¥ì€ ëª¨ë“  GL í…스ì³ë¥¼ 재ìƒì„±í•˜ê³  ì´ë¥¼ 비디오 메모리로 업로드하는 ë‚´ìš©ì„ ë‹´ê³  있습니다.
  • 하드웨어 ì„œí”¼ìŠ¤ì˜ ë‚´ìš©ë³€ê²½ì€ í”¼í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 하드웨어 서피스를 수정하는 ê²ƒì€ ìž ê¸ˆ/í•´ì œ ìž‘ì—…ì„ ìˆ˜ë°˜í•˜ì—¬ì•¼ 하기 때문입니다. ì´ë•Œ 소프트웨어 서피스를 사용하는 ê²ƒë„ ì¢‹ì€ ë°©ë²•ì´ ì•„ë‹™ë‹ˆë‹¤(매프레임때마다 소프트웨어 서피스를 수정하고 ì´ë¥¼ blit하는 것ì´ë‚˜ 하드웨어 서피스를 수정하고 blit하는거나 ê±°ì˜ ë¹„ìŠ·í•©ë‹ˆë‹¤) 그러므로 그냥 ëª¨ë‘ í•˜ë“œì›¨ì–´ 서피스ë¼ë¦¬ 처리하는 ê²ƒì´ ìµœì„ ìž…ë‹ˆë‹¤.
  • 하드웨어 ì„œí”¼ìŠ¤ì˜ ë‚´ìš©ì„ ì½ì§€ 않는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. 아주 ìž‘ì€ í¬ê¸°ë¥¼ ì½ì–´ë„ 현저한 효과가 나타납니다. (ì´ëŸ° ì´ìœ ë¡œ 마우스 커서를 없애는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ì§ì ‘ 스프ë¼ì´íŠ¸ë¡œ 구현해주는 ê²ƒë„ ì¢‹ì€ ë°©ë²•ìž…ë‹ˆë‹¤)

9 블리팅(blitting) #

glSDLì€ ê²Œìœ¼ë¥¸(lazy) 업로드 ë°©ì‹ì„ íƒí•˜ê³  있습니다(즉, 필요할 때만 업로드하고 ê·¸ ì´í›„ì—는 하지 않습니다. ë§¨ì²˜ìŒ blitë§Œ ëŠë¦¬ê³  ê·¸ ì´í›„ì—는 빠릅니다.) 그러므로 ë‹¤ìŒ ì‚¬í•­ì„ ì£¼ì˜í•˜ëŠ” ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
  • 하드웨어 -> 소프트웨어 blit는 피하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. ìš°ì„  하드웨어 서피스와 ë™ì¼í•œ 소프트웨어 서피스를 만들고 ì´ë¥¼ blit하므로 가장 ëŠë¦° 방법ì´ë¼ê³  í•  수 있습니다.
  • 소프트웨어 -> 하드웨어 blit 역시 피하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
  • 비디오 서피스 -> 비디오 서피스외 다른 ì„œí”¼ìŠ¤ë¡œì˜ blit는 피하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.
  • 요약하면 ê°€ê¸‰ì  ì†Œí”„íŠ¸ì›¨ì–´->소프트웨어, 하드웨어->하드웨어 blitê°€ 가장 효율ì ìž…니다.

10 기타 주ì˜ì‚¬í•­ #

  • OpenGL 드ë¼ì´ë²„를 해당 ì¹´ë“œì— ë§žëŠ” ê°€ì† ë“œë¼ì´ë²„로 설치하여야 합니다. 그렇지 않으면 ì¼ë°˜ 소프트웨어 모드를 사용하는 것보다 ëŠë¦´ìˆ˜ 있습니다.
  • 서피스 ìƒì„±/ì†Œë©¸ì€ ë§¤ìš° ëŠë¦½ë‹ˆë‹¤. 즉, 게임 시작과 ë부분과 ê°™ì€ ë‹¨ê³„ì—서 몰아서 처리하는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-10-28 12:42:54
Processing time 0.3220 sec