책 소개
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/directx-game)
<책 소개>
DirectX 게임 프로그래밍에서 비주얼 이펙트를 극대화하는 법과 그래픽을 최적화하는 법을 다루는 이 책은 최신 C++ 기술과 기법에 대한 실전적인 입문서다. DirectX의 기초, 2D 그래픽스, 3D 그래픽스, 프로그램 최적화, 골격 애니메이션, 정점 셰이더와 픽셀 셰이더 프로그래밍, 게임 엔진의 얼개에 이르기까지 다양한 주제를 다루고 있다.
[ 소개 ]
이 책은 C++와 DirectX를 이용해 데모 클립을 개발하는 방법을 다루고 있다. 이 책에서 다룰 주제와 기술, 기법을 이해하려면 데모와 데모신(demoscene)에 대해서 알아야 한다. 데모란 그래픽 이펙트에 때로는 사운드 이펙트를 곁들인 짧은 프로그램 또는 프로그램의 코드 조각을 말한다. 데모신이란 데모를 만들면서 생긴 일종의 규칙이나 법칙을 모두 아우른 문화적 총체를 말한다. 데모 개발팀들은 데모 파티에 모여서 자신의 창작품을 관객의 판단에 내맡기곤 한다. 데모를 만드는 것은 개인이 아니라 팀이다. 오늘날 혼자의 힘으로 멋있는 데모를 만든다는 것은 불가능에 가깝다. 데모를 만드는 데는 최소한 프로그래머와 디자이너, 음악가 등 세 명의 전문가가 필요하다.
그러나 이와 같은 설명만으로는 데모신의 모든 의미를 다 전달할 수가 없다. 데모신을 완전히 이해하려면 데모신이라는 문화가 생기고 발전한 역사를 이해해야 한다. 그래야만 정말로 유별난 데모신이라는 문화와 이 책에서 다루려는 내용의 정수를 이해할 수 있을 것이다.
현대적인 의미의 데모신은 게임 산업과 많은 공통점이 있다. 예전에 데모신을 만들던 프로그래머 중에 많은 수가 게임 개발자가 됐기 때문이다. 반대의 경우도 물론 있다. 게임 프로그래머가 새로운 영역에서의 자아실현을 위해 데모를 만드는 데 뛰어들거나 그래픽스 알고리즘을 생각하고 코드를 최적화하면서 머리 회전을 시키기 위해서 또는 게임의 홍보를 위해서 데모를 만드는 경우도 있다.
[ 부록 CD ]
책에 나오는 모든 데모와 게임 개발 프로젝트, 책의 예제가 담겨 있으며, 책에 미처 담지 못한 다양한 샘플 예제도 많다.
(https://github.com/AcornPublishing/directx-game)
<책 소개>
DirectX 게임 프로그래밍에서 비주얼 이펙트를 극대화하는 법과 그래픽을 최적화하는 법을 다루는 이 책은 최신 C++ 기술과 기법에 대한 실전적인 입문서다. DirectX의 기초, 2D 그래픽스, 3D 그래픽스, 프로그램 최적화, 골격 애니메이션, 정점 셰이더와 픽셀 셰이더 프로그래밍, 게임 엔진의 얼개에 이르기까지 다양한 주제를 다루고 있다.
[ 소개 ]
이 책은 C++와 DirectX를 이용해 데모 클립을 개발하는 방법을 다루고 있다. 이 책에서 다룰 주제와 기술, 기법을 이해하려면 데모와 데모신(demoscene)에 대해서 알아야 한다. 데모란 그래픽 이펙트에 때로는 사운드 이펙트를 곁들인 짧은 프로그램 또는 프로그램의 코드 조각을 말한다. 데모신이란 데모를 만들면서 생긴 일종의 규칙이나 법칙을 모두 아우른 문화적 총체를 말한다. 데모 개발팀들은 데모 파티에 모여서 자신의 창작품을 관객의 판단에 내맡기곤 한다. 데모를 만드는 것은 개인이 아니라 팀이다. 오늘날 혼자의 힘으로 멋있는 데모를 만든다는 것은 불가능에 가깝다. 데모를 만드는 데는 최소한 프로그래머와 디자이너, 음악가 등 세 명의 전문가가 필요하다.
그러나 이와 같은 설명만으로는 데모신의 모든 의미를 다 전달할 수가 없다. 데모신을 완전히 이해하려면 데모신이라는 문화가 생기고 발전한 역사를 이해해야 한다. 그래야만 정말로 유별난 데모신이라는 문화와 이 책에서 다루려는 내용의 정수를 이해할 수 있을 것이다.
현대적인 의미의 데모신은 게임 산업과 많은 공통점이 있다. 예전에 데모신을 만들던 프로그래머 중에 많은 수가 게임 개발자가 됐기 때문이다. 반대의 경우도 물론 있다. 게임 프로그래머가 새로운 영역에서의 자아실현을 위해 데모를 만드는 데 뛰어들거나 그래픽스 알고리즘을 생각하고 코드를 최적화하면서 머리 회전을 시키기 위해서 또는 게임의 홍보를 위해서 데모를 만드는 경우도 있다.
[ 부록 CD ]
책에 나오는 모든 데모와 게임 개발 프로젝트, 책의 예제가 담겨 있으며, 책에 미처 담지 못한 다양한 샘플 예제도 많다.
목차
목차
- 01장 데모와 DirectX 소개
- 1.1 데모의 역사 ● 19
- 1.2 DirectX 소개 ● 25
- 1.3 DirectX의 설치와 설정 ● 27
- 1.4 최적화의 소개 ● 30
- 제1규칙 ● 30
- 제2규칙 ● 31
- 제3규칙 ● 32
- 제4규칙 ● 33
- 제5규칙 ● 33
- 제6규칙 ● 35
- 제7규칙 ● 35
- 제8규칙 ● 36
- 제9규칙 ● 36
- 1.5 Direct3D 초기화 ● 37
- 1.6 DirectDraw 초기화 ● 48
- 1.7 리소스 해제 ● 56
- 02장 사용된 함수
- 2.1 DirectDraw에서의 이미지 로딩 ● 60
- 2.2 메시 ● 63
- 2.3 메시 표시법 ● 67
- 03장 DirectX 최적화
- 3.1 그래픽 최적화 ● 71
- 3.2 서피스 빨리 채우기 ● 74
- 3.3 선 그리기 78
- 3.4 빠른 이미지 로딩 ● 85
- 3.5 출력 영역을 수동으로 제어 ● 90
- 3.6 직접 액세스 최적화 ● 98
- 3.7 3D 그래픽 최적화 ● 101
- 3.8 3D 최적화 함수 ● 104
- 04장 2D 이펙트
- 4.1 착시현상 ● 108
- 그레이디언트 효과 ● 108
- 애니메이션 ● 109
- 4.2 선을 사용한 효과 ● 109
- 그물 효과 ● 110
- 직사각형의 나선 효과 ● 111
- 직사각형의 터널 효과 ● 114
- 4.3 직선을 사용하지 않은 그래픽 ● 118
- 불꽃놀이 효과 ● 118
- 염산 효과 ● 121
- 4.4 이미지를 이용한 이펙트 ● 123
- 투명 효과 ● 126
- 확대 효과 ● 128
- 정사각형 렌즈 ● 128
- 원형 렌즈 ● 130
- 볼록 렌즈 ● 132
- 4.5 프랙탈 ● 134
- 4.1 착시현상 ● 108
- 05장 3D 이펙트
- 5.1 글로우 효과 ● 138
- 초기화 ● 138
- 셰이프 표시 ● 143
- 마지막 단계 ● 146
- 5.2 포인트 텍스처 ● 147
- 5.3 텍스처에 그리기 ● 150
- 준비 ● 151
- 초기화 ● 152
- 텍스처 애니메이션 ● 156
- 5.4 볼링핀 ● 160
- 5.5 이펙트 ● 168
- 5.6 정점 셰이더 소개 ● 171
- 5.7 간단한 셰이더 ● 175
- 셰이더 코드 작성 ● 175
- 정점 셰이더 사용 ● 179
- 5.8 셰이더에서의 조명 제어 ● 186
- 법선 ● 187
- 셰이더 ● 188
- 5.9 무중력 덩어리 ● 190
- 5.10 픽셀 셰이더 ● 195
- 5.11 하이라이트 효과 ● 202
- 5.12 심전도 효과 ● 204
- 5.13 불 효과 ● 207
- 모닥불 ● 208
- 불꽃 대포알 ● 212
- 불타는 용암 ● 213
- 5.14 모핑 ● 214
- 5.15 번개 효과 ● 217
- 5.16 셰이더에서의 정육면체 텍스처 사용법 ● 218
- 5.17 객체별 셰이더 ● 221
- 5.1 글로우 효과 ● 138
- 06장 엔진
- 6.1 엔진의 구조 ● 227
- 6.2 객체 엔진 ● 228
- 6.3 게임 엔진 ● 235
- 6.4 엔진의 실행 ● 241
- 6.5 그림자 ● 245
- 6.6 광원이 여러 개인 경우 ● 253
- 6.7 골격 애니메이션 ● 256
- 6.8 메시 저장 포맷 ● 258
- 6.9 골격 애니메이션의 프로그래밍 기초 ● 264
- 6.10 메시와 골격을 .x 파일에서 읽어들이기 ● 266
- 6.11 객체의 파싱 ● 271
- 6.12 메시 읽어들이기 ● 274
- 6.13 자식 원소 읽어들이기 ● 277
- 6.14 프레임 검색 ● 278
- 6.15 골격 갱신 ● 279
- 6.16 메시 갱신 ● 281
- 6.17 골격 애니메이션 ● 283
- 6.18 애니메이션을 .x 파일에 저장하기 ● 288
- 6.19 애니메이션을 .x 파일에서 읽어들이기 ● 291
- 필요한 클래스 ● 291
- 파일 파싱하기 ● 293
- 키 파싱하기 ● 295
- 6.20 애니메이션의 사용 ● 296
- 6.21 충돌 ● 299
- 점과 평면의 충돌 ● 300
- 점과 직육면체의 충돌 ● 300
- 점과 구의 충돌 ● 301
- 구와 구의 충돌 ● 301
- 6.22 게임에서의 충돌 ● 302
- 6.23 충돌검사 구현 예제 ● 305
- 6.24 더 깊이 파고들기 ● 309
- 6.25 마지막 조언 ● 313
- 맺음말 ● 315
관련 블로그 글
초보 게임 개발자를 위한 속성 프로그래밍 입문가이드
『초보 개발자를 위한 DirectX 게임·데모 프로그래밍』
DirectX 기초부터 캐릭터 애니메이션과 셰이더 프로그래밍까지
마이클 플레노프 지음 | 안병규 옮김 | 게임 개발 프로그래밍 시리즈 ⑤
320쪽 | 28,000원 | 2008년 10월 23일 출간예정
DirectX 기초부터 캐릭터 애니메이션과 셰이더 프로그래밍까지
마이클 플레노프 지음 | 안병규 옮김 | 게임 개발 프로그래밍 시리즈 ⑤
320쪽 | 28,000원 | 2008년 10월 23일 출간예정
[##_1L|1229668828.jpg|width="113" height="226" alt="사용자 삽입 이미지"|<이 책의 대상 독자^^>_##]세상에는 게임 개발 관련 책이 정말 많이 나와 있습니다. 각 게임 개발 전문분야를 파고드는 책도 많고, 입문자를 위한 책도 많죠. 하지만 『게임회사 이야기』덕분에 우리에겐 더더욱 친숙한 게임 프로그래머 여러분을 위한 실용적인 입문서는 무엇이 있을까요? 여기 초보 게임 개발자 여러분들이 업무를 시작하기에 앞서 꼭 필요한 내용을 단번에 익힐 수 있는 실전 속성 게임 프로그래밍 가이드가 출간됐습니다. 에이콘에서도 참 오랜만에 선보이는 게임 개발 프로그래밍 시리즈 책이죠.
목차를 보시면 아시겠지만, 이 책을 실제적인 완벽 가이드라든가 집중분석서적이라고는 할 수 없습니다. 허나 게임 개발의 기초적인 내용을 모두 다루는 방대한 내용을 이렇게 한 권에 집약해서 다뤘다는 점이 바로 이 책의 장점이기도 합니다. 실용적인 게임 데모 프로젝트 예제들을 다룸으로써, 직접 소스코드를 실행해서 각 결과물을 눈으로 직접 확인할 수 있게 함으로써 게임 프로그래밍의 기초를 몸소 체험할 수 있습니다. 초보 개발자분들에게 필요한 건 대강의 그림과 얼개를 익히는 것도 무엇보다도 중요하니까요.
DirectX 게임 프로그래밍에서 비주얼 이펙트를 극대화하는 법과 그래픽을 최적화하는 법을 다루는 이 책은 최신 C++ 기술과 기법에 대한 실전적인 입문서다. DirectX의 기초, 2D 그래픽스, 3D 그래픽스, 프로그램 최적화, 골격 애니메이션, 정점 셰이더와 픽셀 셰이더 프로그래밍, 게임 엔진의 얼개에 이르기까지 다양한 주제를 다루고 있다.이 책은 크게 몇 가지로 나눌 수 있습니다. 첫째, 게임 프로그래밍과 그래픽 이펙트의 기초인 2D 이펙트와 DirectX 프로그래밍을 집중해 다룸으로써 3D 이펙트의 대강을 훑어봅니다. 또한 캐릭터 애니메이션을 실습해봄으로써 코드를 실행하면서 대강의 뼈대를 만들어 돌려보면서 감각을 익힐 수 있겠죠. 그리고 최근 그래픽 카드 기술 향상으로 발전된 셰이더 프로그래밍을 정점/픽셀 단위로 나눠 다룸으로써 사실적이고 리얼한 표현을 구현하는 것까지 익힐 수 있습니다.
이 책은 C++ 프로그래밍의 해커라고 할 수 있는 마이클 플레노프가 집필하고, 넥슨 등에서 게임 개발자로 6년간 일하다가 지금은 존스홉킨스 대학에서 박사과정을 공부하고 있는 안병규님이 번역했습니다. 대학선후배들과 함께 작년에 출간한『GREAT CODE 제2권 로우레벨을 고려한 프로그램 최적화』도 번역하셨던 분이죠. 요즘 저희와 함께 작업하는 역자분들 중 유학생들이 참 많으세요. 학기 공부하시느라 바쁜 중에 인터넷 폰으로 장시간 통화도 마다않으시고 마감하느라 고생하신 병규님, 자연어 처리를 전공하신다니 앞으로도 도움 받을 일이 많을 듯합니다.
게임 업계에 발을 담그신 이력을 살려 이 책의 특징을 누구보다도 더 이해하기 싶게 써주신 옮긴이의 말을 잠시 빌려 보여드리면 이 책의 특장점을 누구보다 쉽게 이해할 수 있으리라 생각합니다.
데모에 대한 저자의 애정과 전문가로서의 경험이 이 책 전반에 배어 있다. 유용한 실제 코드를 보면서 일일이 짚어가는 방식은 바로 해커들이 프로그래밍을 익힌 과정과 동일하다. 친절한 설명을 통해, Visual C++에서 DirectX는커녕 외부 라이브러리를 한 번도 사용해보지 않은 사람이나, 3D 그래픽의 기본적인 이론인 행렬 변환을 모르는 사람조차도 빠르고 쉽게 코드를 이해하고 직접 작성해볼 수 있다. 또한 대학교재를 통해 이론적인 공부만 했던 사람은 알기 힘든 초보적인 실수를 피하는 법이나 얼핏 보기에 간단해 보이지만 사실은 쉽지 않은 최적화 비법도 책의 곳곳에 숨겨져 있다.[##_1L|1648369251.jpg|width="120" height="120" alt="사용자 삽입 이미지"|_##]참, 이 책에 삽입된 부록 CD에는 이 책에서 사용된 소스코드, 데모 프로젝트 예제, 그리고 책의 분량때문에 미처 다 담지 못한 다양한 샘플 프로젝트 예제들이 가득가득 들어 있습니다.
책에서 소개한 주제들은 그래픽 프로그래밍뿐만 아니라 범용적인 프로그래밍에도 적용할 수 있는 내용으로 이뤄져 있지만, 이 모든 것은 그래픽 데모 프로그래밍에 초점이 맞춰져 있다. 프로그래밍으로 만들 수 있는 다양한 2D 이펙트와 3D 이펙트를 소개한 4장과 5장에서 그런 특징이 두드러진다. 전형적인 프로그래밍 서적에 조그마한 싫증이라도 느꼈다면, 이 책에서 소개한 간단하면서도 흥미로운 기법들을 탐구하면서 즐거운 시간을 보낼 수 있을 것이다.
필자는 독자들이 데모 프로그래밍의 세계로 들어오기를 간절히 바라고 있지만, 게임 프로그래밍에 입문하고 싶어하는 독자라면 누구나 이 책의 효과를 볼 수 있을 것이다. 현재 국내의 게임업계에서도 대부분의 업체가 DirectX를 이용해서 3D 그래픽을 구현하고 있기 때문이다.
마지막으로 이 책을 읽으실 게임 개발자 분들의 분투를 기원하며, 이수인님의 『게임회사 이야기』만화 컷을 올려 드릴게요. 잠시 머리 식히세요~ ^^
+ 추가
『초보 개발자를 위한 DirectX 게임 데모 프로그래밍』은 지금 바로 YES24, 교보문고, 강컴, 알라딘, 인터파크에서 주문하시면 이번 주 금요일이면 손에 넣으실 수 있을 거에요. 곧 나옵니다. :) 기대해주세요!
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.