offfff

SDL 용어 정리 본문

프로그래밍

SDL 용어 정리

offfff 2017. 11. 7. 17:50

SDL_Window

 

창 자체의 모든 정보를 저장하는 구조체

사이즈, 위치, 풀 스크린, 경계 등...

 

 

SDL_Renderer

 

모든 렌더링을 다루는 구조체

SDL_Window에 묶여서 하나의 창 안에서만 사용가능하다.

렌더링에 관련된 설정들을 갖는다.

아래 함수가 SDL_Renderer에 필수적으로 사용된다.

 

- SDL_SetRenderDrawColor(renderer, r,g,b, a);

화면을 지울 때 쓸 색을 렌더러에 설정

- SDL_RenderClear(renderer);

     렌더러에 설정된 색으로 렌더링 타겟을 클리어(지움)

- SDL_RenderCopy(

     Blit의 한 방법. 가장 많이 사용된다. 아래 인자들을 가지고 SDL_Texture를 렌더링한다.

SDL_Renderer* renderer,

                      렌더링에 사용하길 원하는 렌더러

           SDL_Texture* texture,

                      렌더링하려는 텍스쳐

           const SDL_Rect* src_rect,

                      렌더링 할 텍스쳐의 일부를 설정, 전체를 다 사용할 시 NULL

           const SDL_Rect* dst_rect)

                      창 안에서 렌더링 할 위치를 설정

만약 dst_rect의 폭, 높이가 텍스쳐 공간보다 크거나 작으면,

텍스쳐가 dst_rect의 크기에 맞춰 늘어나거나 줄어든다.

- SDL_RenderPresent(renderer);

     다른 SDL_Render* 함수들은 숨겨진 타겟을 그린다.

이 함수는 렌더러에 있는 모든 것을 가져와, 렌더러가 묶인 창 안에 그려준다.

 

 

 

 

SDL_Textures SDL_Surface

 

SDL_Renderer SDL_Texture를 렌더링 한다.

여기서 SDL_Texture는 한 요소의 픽셀정보이다.

SDL_Surface의 새로운 버전과 마찬가지이다.

주요한 차이점은 SDL_Surface는 단지 픽셀 정보를 담고있는 구조체인 반면,

SDL_Texture는 드라이버 입장에서 효율적인 픽셀 데이터로 표현 되어있다.

(SDL_Texture – H/W rendering vs SDL_Surface – S/W rendering)

 

아래 함수를 사용해서 SDL_Surface* SDL_Texture로 변환가능하다.

SDL_Texture* SDL_CreateTextureFromSurface(SDL_Renderer* renderer, SDL_Surface* surface)

 

위 함수를 쓰고 나서, SDL_Surface를 아래 함수로 해제(free)해 주어야 한다.

SDL_FreeSurface(SDL_Surface* surface)

 

이미지나 폰트는 SDL_Image, SDL_ttf

 

 

SDL_Rect

 

SDL에서 가장 단순한 구조체

short 변수 4개만 가짐(위치정보 x, y, , 높이 정보 w, h)

 

SDL에서 0,0은 좌상단 모서리로 정의 되어있다.
따라서 y값이 높을수록 아래쪽을 가리키고

우측 하단 모서리 좌표는 (x+w, y+h)가 된다.



참고

https://stackoverflow.com/questions/21007329/what-is-a-sdl-renderer/21007477#21007477

https://en.wikipedia.org/wiki/Bit_blit