-
(챕터 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 공부하러 가야겠다..추가적으로 리틀 엔디안에 대해 확실히 이해하고 와야함..(대충말고 확실.) 낼 다시..ㄱㄱ
'@ 16. 1 ~ 17. 1 > 게임프로그래밍의 정석' 카테고리의 다른 글
(챕터 03) 이미지 파일을 사용하자(2) (0) 2014.03.01 싱글톤 클래스 (0) 2013.05.06 (챕터 02) 점에서 시작하는 2D그래픽(2) (0) 2013.04.24 (챕터 02) 점에서 시작하는 2D그래픽(1) (0) 2013.04.23 팁: 플래그와 비트연산 (0) 2013.04.23