책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 게임 프로그래밍
· ISBN : 9788956742526
· 쪽수 : 1178쪽
· 출판일 : 2005-03-15
책 소개
목차
파트 1 클래식 OpenGL
1. 3D 그래픽과 OpenGL
컴퓨터 그래픽의 간략한 역사
CRT
3D로의 진화
다양한 3D 효과들
원근법
색상과 쉐이딩
조명과 그림자
텍스처 입히기
안개
블렌딩과 투명 효과
안티 알리아싱
3D 그래픽의 활용
실시간 3D
비 실시간 3D
3D 프로그래밍의 기본적인 지식들
즉시 모드와 보류 모드(씬 그래프)
좌표 체계
투영: 3D를 2D로
단원을 마치며
2. OpenGL의 사용
OpenGL이란 무엇인가?
진화하는 표준
API 전쟁
OpenGL은 어떻게 작동하는가?
일반적인 임플리먼테이션
하드웨어 임플리먼테이션
파이프라인
OpenGL은 언어가 아닌 API이다
라이브러리와 헤더
API
데이터 타입
함수의 이름짓기 규칙
플랫폼 독립성
GLUT의 사용
프로그래밍 환경의 설정
여러분의 첫 번째 프로그램
OpenGL로 도형 그리기
OpenGL과 GLUT를 사용한 애니메이션
더블 버퍼링
OpenGL 상태 머신
상태의 저장과 로딩
OpenGL 오류
좋은 코드에도 나쁜 일들이 벌어진다
버전의 확인
glHint의 사용
확장 기능의 사용
확장 기능의 확인
확장 기능의 제작사 알아내기
윈도우즈에서의 OpenGL 1.1 사용
단원을 마치며
레퍼런스
3. 공간 내의 드로잉 : 지오메트리와 버퍼
3D 공간에서의 점 그리기
3D 캔버스의 설정
3D 점 : 버텍스
무언가 그려보자!
점 그리기
점 크기의 설정
3D 공간에서의 선 그리기
선 스트립과 루프
직선을 사용한 곡선 표현
선 두께 설정
점선 그리기
3D 공간에서 삼각형 그리기
삼각형: 가장 기본적인 폴리곤
와인딩
삼각형 스트립
삼각형 팬
솔리드 물체 만들기
폴리곤의 색 설정
숨겨진 면 제거하기
추려내기: 면 숨기기를 통한 성능 향상
폴리곤 모드
다른 기본 모델들
네 개의 면을 가진 폴리곤: 사각형
일반적인 폴리곤
텍스처와 스티플링
폴리곤 구성의 규칙
분할과 경계선
다른 버퍼 트릭들
버퍼 타겟의 사용
깊이 버퍼의 제어
가위로 자르기
스텐실 버퍼
단원을 마치며
레퍼런스
4. 지오메트리 변환과 파이프라인
골치 아픈 수학 단원인가?
변환의 이해
시각 좌표
관측 변환
모델링 변환
모델뷰의 이중성
투영 변환
뷰포트 변환
3D 그래픽의 수학적 핵심인 행렬
행렬이란 무엇인가?
변환 파이프라인
모델뷰 행렬
단위 행렬
행렬 스택
원자 모형 예제
투영의 활용
직교 투영
원근 투영
원근 투영의 또 다른 예제
보다 발전된 형태의 행렬 제어
행렬의 로딩
자체적인 변환
변환 행렬의 결합
카메라와 액터를 사용한 OpenGL에서의 이동
액터 프레임
오일러의 각
카메라 관리
배운 내용을 종합해보자
단원을 마치며
레퍼런스
5. 색상, 재질, 조명의 기본
색상이란 무엇인가?
빛의 파동성
빛의 입자성
사람의 광자 탐지 능력
컴퓨터에서 광자가 만들어지는 방식
PC 색상 하드웨어
PC 출력 모드
화면의 해상도
색상의 깊이
OpenGL에서의 색상
색상 큐브
드로잉 색상의 설정
쉐이딩
쉐이딩 모델의 설정
실제 세계의 색상
주변광
분산광
반사광
세 가지 빛의 결합
실세계의 재질
재질의 특성
재질에 조명을 추가
주변광 효과의 계산
분산광과 반사광
조명의 추가
조명 효과의 설정
조명 모델의 설정
재질 속성의 설정
광원의 활용
어떤 방향이 위쪽인가?
법선 벡터
법선 벡터의 지정
단위 법선 벡터
법선 벡터 구하기
광원의 설정
재질 속성의 설정
폴리곤의 지정
조명의 효과
반사광 하이라이트
반사광
반사 재질
반사 지수
평균 법선 구하기
배운 내용을 종합해보자
스포트라이트 만들기
스포트라이트 그리기
그림자
그림자란 무엇인가?
물체의 평면화 코드
그림자 예제
SPHEREWORLD 예제
단원을 마치며
레퍼런스
6. 색상과 재질
블렌딩
색상의 결합
블렌딩 계산식의 변경
안티 알리아싱
안개
누적 버퍼
다른 색상 관련 작업들
색상 매스킹
색상의 논리적 연산
알파 테스팅
디더링
단원을 마치며
레퍼런스
7. OpenGL 이미징
비트맵
비트맵 예제
픽셀 패킹
픽셀맵
압축된 픽셀 포맷
보다 다양한 색상을 사용한 예
픽셀의 이동
픽셀의 저장
몇 가지 흥미로운 픽셀 작업
픽셀의 확대
픽셀의 이동
픽셀 맵핑
이미지 서브셋
이미징 파이프라인
단원을 마치며
레퍼런스
8. 텍스처 맵핑의 기본
텍스처의 로딩
색상 버퍼의 사용
텍스처의 업데이트
텍스처와 지오메트리의 맵핑
텍스처 행렬
간단한 2D 예제
텍스처 환경
텍스처 인자
기본 필터링
텍스처 래핑
만화 스타일의 텍스처
밉맵핑
텍스처 개체
여러 텍스처의 관리
단원을 마치며
레퍼런스
9. 텍스처 맵핑
이차 색상
이방성 필터링
텍스처 압축
텍스처의 압축
압축된 텍스처의 로딩
텍스처 좌표의 생성
개체 선형 맵핑
시각 선형 맵핑
구체 맵핑
큐브 맵핑
멀티 텍스처
멀티 텍스처 좌표
멀티 텍스처 예제
텍스처 혼합기
단원을 마치며
레퍼런스
10. 곡선과 표면
기본 모델들
2차 곡면 상태의 설정
곡면 그리기
곡면을 사용한 모델링
베지어 곡선과 표면
매개 변수를 사용한 표현
곡선 만들기
NURBS
베지어에서 B-Spline으로
Knot
NURBS 면 만들기
NURBS 속성
면의 정의
트리밍
NURBS 곡선
테설레이션
테설레이터
테설레이터 콜백
버텍스 데이터의 지정
실전에 응용해보자
단원을 마치며
레퍼런스
11. 파이프라인 : 보다 빠른 지오메트리의 처리
모델의 구성
조각과 부분
출력 목록
일괄 처리
선처리 일괄 실행
출력 목록 사용시의 주의사항
출력 목록으로의 변환
성능의 측정
보다 나은 예제
버텍스 배열
지오메트리의 로딩
배열의 사용
데이터는 어디에?
드로잉!
버텍스 배열의 인덱스
단원을 마치며
레퍼런스
12. 인터랙티브 그래픽
선택
기본 모델의 이름
선택 모드의 사용
선택 버퍼
픽킹
계층적 픽킹
피드백
피드백 버퍼
피드백 데이터
마커의 사용
피드백 예제
피드백을 위한 물체의 레이블
1 단계: 물체의 선택
2 단계: 물체에 대한 피드백 얻기
단원을 마치며
레퍼런스
파트 2 OpenGL은 어디에나 있다
13. 윈도우즈에서의 OpenGL
윈도우즈에서의 OpenGL 임플리먼테이션
범용 OpenGL
설치 클라이언트 드라이버(ICD)
미니 클라이언트 드라이버(MCD)
미니 드라이버
확장 OpenGL
기본적인 창 렌더링
GDI 장치 컨텍스트
픽셀 포맷
OpenGL 렌더링 컨텍스트
정리
창 만들기
OpenGL 렌더링 컨텍스트 이용하기
다른 윈도우즈 메시지
윈도우즈 팔레트
색상 매칭
팔레트 중재
OpenGL용 팔레트 만들기
팔레트 생성과 해체
OpenGL과 윈도우즈 글꼴
3D 글꼴과 텍스트
2D 글꼴과 텍스트
전화면 렌더링
테두리 없는 창 만들기
전화면 창 만들기
멀티 스레드 렌더링
OpenGL과 WGL 확장
단순한 확장
새 진입점 이용하기
WGL 확장
단원을 마치며
레퍼런스
14. MacOS X에서의 OpenGL
기본
프레임웍
GLUT API 이용하기
AGL과 Carbon API 이용하기
픽셀 포맷
컨텍스트의 관리
이중 버퍼 렌더링하기
첫 번째 AGL 프로그램
비트맵 글꼴 이용하기
Cocoa API 이용하기
NSOpenGL 클래스
첫 번째 Cocoa 프로그램
단원을 마치며
레퍼런스
15. GLX : 리눅스에서의 OpenGL
기본
OpenGL과 X11 라이브러리 이용
GLUT 라이브러리 이용하기
리눅스에서의 OpenGL
OpenGL 에뮬레이션: Mesa
X Window 시스템을 위한 OpenGL 확장
X Window 시스템의 기본
비주얼 선택하기
OpenGL 컨텍스트 관리하기
OpenGL 창 만들기
이중 버퍼 창
종합
OpenGL용 비트맵 글꼴 만들기
오프 스크린 렌더링
GLX 픽셀맵 이용하기
Pbuffer 사용하기
Motif 라이브러리 이용하기
GLwDrawingArea와 GLwMDrawingArea: OpenGL 위짓
콜백
함수
종합
단원을 마치며
레퍼런스
파트 3 OpenGL의 현재와 미래
16. 버퍼 개체 : 우리의 비디오 메모리는 우리가 관리한다!
먼저 버텍스 배열이 필요하다
구형 입자 구름 생성하기
버텍스 배열 활성화
조금 더 추가해보자!
버퍼 개체로의 이전
버퍼 개체의 관리
버퍼 개체를 이용한 렌더링
버퍼 개체로 데이터 로딩하기
버퍼 개체로 데이터 복사하기
버퍼 개체의 직접 맵핑
마무리
단원을 마치며
레퍼런스
17. 차단 쿼리 : 필요한 만큼만 일하자
차단 쿼리를 이용하기 전의 환경
경계 상자
쿼리 개체 확인하기
단원을 마치며
레퍼런스
18. 깊이 텍스처와 그림자
빛이 되자
창에 장면 맞추기
건너뛰어야 할 것들
새로운 종류의 텍스처
그림자를 먼저 그린다?!
그리고 빛이 있으라
그림자 맵의 보호: "왜?"
그림자 맵의 보호: "방법"
그림자 비교
부담 줄이기
폴리곤 오프셋에 대한 참고사항들
단원을 마치며
레퍼런스
19. 프로그래머블 파이프라인 : OpenGL의 제어
기존의 방식
고정 버텍스 처리
고정 프래그먼트 처리
새로운 방식
프로그래머블 버텍스 쉐이더
고정 기능 접합재
프로그래머블 프래그먼트 쉐이더
쉐이더 확장 소개
저수준 확장
고수준 확장
단원을 마치며
20. 저수준 쉐이딩 : 깊이 있는 코딩
저수준 쉐이더의 관리
쉐이더 만들기와 연결하기
쉐이더 로딩
쉐이더 삭제
확장 설정
명령어 세트
공통 명령
버텍스 전용 명령
프래그먼트 전용 명령
변수의 타입
임시 변수
인자 변수
속성 변수
출력 변수
별칭 변수
주소 변수
입력과 출력 변경자
입력 부정
입력 혼합
출력 쓰기 매스크
출력 고정
자원 소비와 쿼리
파서의 제한
고유 제한
다른 쿼리들
쉐이더 옵션
위치 불변 버텍스 옵션
안개 애플리케이션 프래그먼트 옵션
정확도 힌트 프래그먼트 옵션
단원을 마치며
레퍼런스
21. 고수준 쉐이딩
고수준 쉐이더의 관리
쉐이더 개체
프로그램 개체
확장 설정하기
변수
기본 데이터 타입
구조체
배열
한정자
내장 변수
표현식
연산자
배열 접근
컨스트럭터
요소 선택자
흐름 제어
반복문
if/else
discard
함수
단원을 마치며
레퍼런스
22. 버텍스 쉐이딩
시작하기
분산광 적용
반사광
향상된 반사광
버텍스에 안개를 적용
버텍스 당 포인트 크기
버텍스 변환의 조절
버텍스 블렌딩
단원을 마치며
23. 프래그먼트 쉐이딩 : 픽셀 처리의 향상
색상 변환
그레이스케일
세피아 톤
반전
열 추적
프래그먼트 당 안개
이미지 프로세싱
블러
샤픈
팽창과 침식
경계 검출
조명
분산광
다중 반사광
절차적 텍스처 맵핑
바둑판 텍스처
비치 볼 텍스처
장난감 공 텍스처
단원을 마치며
파트 4 부록
부록 A 참고 문헌
다른 OpenGL 관련 서적들
3D 그래픽 서적들
웹 사이트
부록 B 용어
부록 C OpenGL ES
데이터 타입의 축소
완전히 제거된 기능들
상당히 축소된 기능들
텍스처 맵핑
래스터 작업
조명
결론
찾아보기