ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (챕터 03) 이미지 파일을 사용하자
    @ 16. 1 ~ 17. 1/게임프로그래밍의 정석 2013. 4. 24. 23:17

    드디어 지난번 난해했던 3장에 왔다..스스로 힘내보자꾸나..

     

    이미지 파일 중 bmp, png, jpg같은 형식을 순수하게 자력으로만 읽어 오기에는 지나치게 복잡하다고 설명되어있다.

    (난 잘모르겠다..모르니 복잡한지도 모르겠다는...)

    이 책에서는 Directx 표준 이미지 형식인 DDS형식을 사용한다고 한다.

    내부가 단순하다고 표현되는데..이 점도 잘 모르겠음.

    DDS 32비트 ARGB라는데..

    알파 채널, 적색, 녹색, 청색이란다..

    결국 지금까지 사용하던 unsigned을 그대로 파일에 넣은 것과 같다고 표현한다.

    그리고 다양한 DDS이미지를 사용할 수 있도록 이책에서는 bmp jpg png 이미지를 dds로 변환해주는 converter 프로그램을 제공해준다..(정말 친절하다.ㅠ)

     

    DDS 구조 파악

    파일의 전체구조는 다음과 같다고 설명이 되어있다.

     

     번지

    형 

    이름 

    설명 

     0

    DWORD 

    dwMagic 

     D D S 0 네문자 

     4

     DDSURFACEDESC2

     ddsd

     포멧정보

     128

     BYTE

     bData1[]

     데이터 본체

    DWORD는 4바이트 크기인 부호 없는 정수를 나타낸다.(unsigned int)

    BYTE는 1바이트 크기의 부호없는 정수를 나타낸다.(unsigned char)

    WINAPI를 참고하면 더 이해가 쉬울듯..

     

    맨처음 4바이트는 dwMagic이라는 이름으로 DDS 네글자가 있다고 한다.. 모르겠다..있다고 하니..

    다음이 중요하다 4바이트부터 128바이트까지 이미지에 관한 정보가 구조체로 있다고 한다.

    그 안에서 이미지의 높이와 폭을 알 수 있다.(dwHeight, dwWidth)

    간단하게 책 내용을 옮겨적으면..높이는 12바이트째부터 4바이트(dwHeight), 넓이는 16바이트째부터 4바이트(dwWidth)가 원하는 값이 된다고 한다.

     

    여기서 잠깐!

    reinterpret_cast라는 쓰기도 힘들고 읽기도 힘든 캐스트 연산자가 등장한다. ..젠장....

    이게 무엇인고..

    특정 형 포인터에서 다른 형 포인터로 만들 때나 포인터와 정수를 서로 변환할 때 사용한다고 한다..바이너리 파일을 읽고 쓸때 이외에는 안쓴다고 한다..

    우선..여기까지 reinterpret_cast 공부하러 가야겠다..추가적으로 리틀 엔디안에 대해 확실히 이해하고 와야함..(대충말고 확실.) 낼 다시..ㄱㄱ

Designed by Tistory.