https://www.microsoft.com/ko-KR/download/details.aspx?id=6812
Download DirectX SDK from Official Microsoft Download Center
중요! 아래에서 언어를 선택하면 전체 페이지 내용이 해당 언어로 신속하게 변경됩니다. 네덜란드어독일어러시아어스웨덴어스페인어영어이탈리아어일본어중국어(간체)중국어(번체)체코어포
www.microsoft.com
DirectX의 이전 버전들을 통해 샘플을 제공하고 공부할 수 있게 해놓은 브라우저
다운로드 받고 Direct Sample Browser를 실행시키면
여기서 Tutorial 02 Rendering Triangle의 Install Project를 누르고
프로젝트를 실행시킨다.
09-10 년도에 나온 프로그램 이기 때문에 현재의 SDK로 업데이트 하는지 여부가 Visual Studio 에 나오면 OK누른다.
형광펜 친 부분이 Win32로 되어있다면 자신의 컴퓨터에 맞게 변경해 준다.
나는 x64
실행하면 옐로우 삼각형이 나온다.
프로젝트를 Install하는 옆 칸에 document라고 나와 있는데
클릭하면
rendering triangle과 관련된 자료가 나온다.
소스 분석과 이 자료를 통해 충분히 공부 할 수 있다.
Vertices라고 불리는 세가지 포인트 꼭짓점을 좌표로 (0, 0) (0, 1) (1, 0) GPU에 프로그래머가 넘겨야 한다.
그럼 이 직각 삼각형을 GPU가 가진 정보로 렌더링 하여 옐로우 삼각형이자 좌우대칭 귀여운 삼각형으로 만들어준다.
Vertex는 위치, 정상형인지, 컬러, 텍스쳐 등등 많은 정보를 포함한다.
Vertex Layout은 이런 정보들이 메모리에 어떤 상태로 존재하는지 정의하는데, 이거는 어디 쓰이고 저거는 어디 쓰이는지에 관련된 것들을 정의해주며, 각각의 정보들의 사이즈와 순서도 정의한다.
각각의 attribute들이 저마다의 type을 가졌기 때문이다.
XMFLOAT3라는 단일 필드에서의 삼각형을 찍는다.
하지만 각각의 attribute들의 정확한 정의를 담은 Vertex Layout이 필요하고 버퍼에서 Input을 받아서 Input Layout으로 적용되어야 한다.
D3D11_INPUT_ELEMENT_DESC로 각각의 attribute를 정의할 수 있다.
모든 Vertex attribute는 하나 이상의 배열의 D3D11_INPUT_ELEMENT_DESC로 정의된다.
이 배열들을 Input Layout 오브젝트를 만드는데 사용한다.
D3D11.h 에 있다.
SemanticName 요소의 특징이나 특성을 반영하는 String 식별자 |
SemanticIndex 하나의 attribute에 여러 요소가 있을 수 있다. color0, color1과 같이 넘버를 붙인다. |
Format 요소의 data Type을 정의한다 DXGI_FORMAT_R32G32B32_FLOAT는 세개의 32 비트의 floating point number로 되어 12 바이트의 long이 된다. DXGI_FORMAT_R16G16B16A16_UNIT은 네개의 16 비트의 unsigned integer로 되어있고 8 바이트의 long이 된다. |
InputSlot Vertex 자료를 Vertex Buffer를 사용하여 GPU에 넘길 때, 여러개의 Buffer가 동시에 존재할 수 있다. 모든 Buffer는 InputSlot number(0-15)를 붙이게 된다. 현재 요소에 어떤 Vertex Buffer를 사용해야 하는지 GPU가 알게 된다. |
AlignedByteOffset Vertex가 Buffer에 저장될 때는 메모리 덩어리로 저장된다. AlignedByteOffset은 GPU가 fetch를 시작할 메모리의 주소를 알려준다. |
InputSlotClass 거의 D3D11_INPUT_PER_VERTEX_DATA로 되어있다. 풀과 같은 동일한 물체들을 한번에 렌더링 하는 Instancing을 할 때는 D3D11_INPUT_PER_INSTANCE_DATA 를 쓴다. |
InstanceDataStepRate Instancing을 할 때 쓰인다. 하지 않으면 0으로 세팅한다. |
.cpp 에 있는 input
'directX' 카테고리의 다른 글
DirectX 3D 12 구성 요소 만들기 basic Components (0) | 2021.08.07 |
---|---|
Visual Studio 2019 DirectX 12 워크로드 (프로젝트 생성 시 directx 프로젝트 템플릿 항목이 없을 때) (0) | 2021.08.05 |
Component Object Model [COM 객체] (0) | 2021.08.04 |
DirectX 12를 이용한 3D 게임 프로그래밍 입문 (0) | 2021.08.04 |