DirectX 12를 이용한 3D 게임 프로그래밍 입문 정오표

이 책의 GPG 카탈로그 페이지

4쇄(2023년)에서 수정된 사항들

p.231 법선 수식에서

n 우변 분모가 절댓값 ‖e0 × e1‖ 이어야 합니다.

p.253 불릿 목록 1번에서

1. BufferLocation: 생성할 뷰의 대상이 되는 정점 버퍼 자원의 가상 주소,

=> (정점 버퍼가 아니라 색인 버퍼)

1. BufferLocation: 생성할 뷰의 대상이 되는 색인 버퍼 자원의 가상 주소

p.254 코드 중간

mCommandList.Get(), indices), ibByteSize, IndexBufferUploader);

=> (indices 다음의 괄호 삭제)

mCommandList.Get(), indices, ibByteSize, IndexBufferUploader);

p.266 PS 함수 반환문

return pin.Color;

=>

return color;

p.339 주석에서

// 연결된 정점 버퍼에서의 각 물체의 시작 색인을

=> (정점 버퍼가 아니라 색인 버퍼)

// 연결된 색인 버퍼에서의 각 물체의 시작 색인을

기타

https://gpgstudy.com/forum/viewtopic.php?f=20&t=25609 에 보고된 오류 중 다음 사항이 4쇄에 반영되었습니다. 일단 그대로 나열하고, 나중에 좀 더 깔끔하게 정리하게습니다.

231p e0 X e1 / e0 X e1 -> e0 X e1 / II e0 X e1 II
253p 정점버퍼자원 -> 인덱스버퍼자원
254p indices) -> indices
266p return pin.Color -> return color
339p //연결된 정점버퍼 -> 색인버퍼
346p //i번째 물체별 상수버퍼의 (오프셋) -> (가상주소)
397p 식8.3 위문장 비율 -> 양
411p specAlbedo = roughness Factor * fresnel Factor이 없음
446p 그림9.5 텍셀점이 31.5 32.5에 있는게 더 적합
513p 비교연산자 -> stencilpassOp
542p Trianglestream<GeoOut> 뒤에 triStream이 빠짐
550p 세계공간 -> 동차절단공간
550p %3 -> %4
577p 기하셰이더 -> 계산셰이더 (2개)
577,578p goutput -> gNextSolouput
587p 60개 -> 600개
602p 참고 14이랑28이 바뀜

3쇄(2021년)에서 수정된 사항들

p.16 왼손 엄지 법칙 문단에서

(첫 벡터와의 각도가 90도 이하가 되는 쪽)

=>

(첫 벡터와의 각도가 180도 이하가 되는 쪽)

2쇄(2020년)에서 수정된 사항들

p.39 연습문제 10번 힌트에서

c2 = || u-v||

=> (우변에 2제곱 추가)

c2 = || u-v||2

p.72~74 회전 변환 설명

p.72 3.1.4절 첫 문단에서:

이러한 변환에서 회전각은 n의 진행 방향을 기준으로 반시계방향으로 측정한다.

=>

이러한 변환에서 회전각은 n을 내려다 보는 방향(즉, n의 반대 방향)을 기준으로 시계방향으로 측정한다.

p.74 그림 3.4에서:

양의 y 축 방향으로 바라볼 때

=>

양의 y 축을 내려다 보는 뱡향으로 바라볼 때

p.243 그림 6.1 중간 vertexDesc 정의

D3D11_INPUT_ELEMENT_DESC vertexDesc[] =
{
    {'POSITION', 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0,
        D3D11_INPUT_PER_VERTEX_DATA, 0},
    {'NORMAL', 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12,
        D3D11_INPUT_PER_VERTEX_DATA, 0},
    {'TEXCOORD', 0, DXGI_FORMAT_R32G32_FLOAT, 0, 24,
        D3D11_INPUT_PER_VERTEX_DATA, 0},
    {'TEXCOORD', 1, DXGI_FORMAT_R32G32_FLOAT, 0, 32,
        D3D11_INPUT_PER_VERTEX_DATA, 0}
};

=>

D3D12_INPUT_ELEMENT_DESC vertexDesc[] =
{
    {'POSITION', 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0,
        D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0},
    {'NORMAL', 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12,
        D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0},
    {'TEXCOORD', 0, DXGI_FORMAT_R32G32_FLOAT, 0, 24,
        D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0},
    {'TEXCOORD', 1, DXGI_FORMAT_R32G32_FLOAT, 0, 32,
        D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0}
};