DirectX

3. 버퍼, 쉐이더 및 HLSL
버텍스 버퍼(Vertex Buffer) 이해해야 할 첫 번째 개념은 정점 버퍼 입니다. 이 개념을 설명하기 위해 구의 3D 모델을 예로 들어보겠습니ㅏㄷ. 3D 구형 모델은 실제로 수백개의 삼각형으로 구성됩니다. 구형 모델의 각 삼각형에는 3개읜 점이 있으며, 각 점을 꼭짓점이라고 부릅니다. 따라서 우리가 구형 모델을 렌더링 하려면, 구형을 구성하는 모든 정점을 정점버퍼라고 부르는 특수 데이터 배열에 넣어야 합니다. 구형 모델의 모든 점이 버텍스 버퍼에 있으면 우리는 버텍스 버퍼를 GPU 에 전송하여 모델을 렌더링 할 수 있습니다. 인덱스 버퍼 인덱스 버퍼는 정점 버퍼와 관련이 있습니다. 그 목적은 정점 버퍼에 있는 각 정점의 위치를 기록하는 것입니다. 그런 다음 GPU는 인덱스 버퍼를 사용하여 정점 버퍼..

번외) Warning - warning C4316 에러 문제
아래와 같이 컴파일 시, warning C4316을 뱉어낸다는 문제가 발생했습니다. alignment error(C4316)은 무엇인가!?!? 위 경고는 __declspec(align(byte))로 정렬돼야 하는 데이터를 멤버로 가지거나, 할당할 때 생기는 경고입니다. 오류나는 부분을 점검해보면 XMMATRIX 변수부분에 대한 에러가 발생하는데 다음과 같습니다. 정의 부분을 보면 __declspec(align(16))으로 16바이트 정렬을 사용한다고 명시되어 있습니다. 이는 자주 사용되는 데이터를 특정 프로세서 캐시라인 크기로 정렬하여 한꺼번에 계산하여 CPU 캐시 처리 성능을 높여줍니다. 게임 프로그래밍에 사용되는 행렬 연산을 고속으로 한꺼번에 처리하기 위해서 SSE라는 새로운 명령어 집합이 생겨나게 ..

2. DirectX 초기화
프레임워크 업데이트 기존의 윈도우 프로그램 프레임워크에 Direct3D 기능을 가지는 클래스를 추가하여 확장할 것 입니다. 새롭게 변경된 프레임워크는 아래와 같습니다. 보기사시피 D3DClass는 GraphicsClass 안에 있습니다. 클래스 다이어그램이 아닌점을 감안하시고 보시기 바라며, 상속 관계가 아닙니다. 이전 튜토리얼에서는 모든 새로운 그래픽 관련 클래스가 GraphicsClass에 캡슐화 되어 새로운 D3DClass에 가장 적합한 위치라는 것을 언급했습니다. 이제 DxDefine.h에 대한 변경 사항을 살펴 보겠습니다. DirectX SDK를 사용하기 위해서 DirectX에 필요한 헤더 및 라이브러리를 포함했습니다. DxDefine.h 업데이트 #pragma once /////////////..

1. 프레임 워크 및 윈도우
프레임워크 작업은 네 가지 항목으로 시작됩니다. 진입 점을 처리하는 WinMain 함수가 있습니다. 또한 WinMain 함수 내에서 호출 될 전체 응용 프로그램을 캡슐화 하는 시스템 클래스가 있습니다. 시스템 클래스 안에는 사용자 입력을 처리하기 위한 입력 클래스와 DirectX 글래픽 코드를 처리하기 위한 그래픽 클래스가 있습니다. 전방선언 사용의 이점과 빌드 시간 감축을 위해 미리 컴파일된 헤더(stdafx.h)의 이점을 사용하기 위해 미리 사용될 헤더 파일을 따로 "DxDefine.h"으로 작성해서 만들었습니다. stdafx.h // stdafx.h : 자주 사용하지만 자주 변경되지는 않는 // 표준 시스템 포함 파일 또는 프로젝트 관련 포함 파일이 // 들어 있는 포함 파일입니다. // #prag..