루인엘다 2024. 3. 27. 10:17

다이렉트 라이브러린를 사용하기 위해 어제 만든 PreCompile에 라이브러리를 추가한다.

그리고 헤더에 다이렉트 관련 헤더들을 추가할 것이다.

d3dll_4.h 헤더 : 메인헤더

d3dcompiler.h : 쉐이더 컴파일러 인터페이스

DirectXPackedVector.h : 다이렉트벡터 헤더

DirectXCollision.h : 다이렉트용 충돌 헤

 

엔진에 UEngineGraphicDevice라는 클래스를 만들것이다. 이 클래스는 그림을 그리는 행위들을 담을 예정이다.

 

9까지는 인터페이스에 Device밖에 없는 느낌이었다. DX는 마이크로소프트꺼라 당연히 핸들 방식이었다. 대략적으로 Device-> ~~~의 느낌으로 사용했다. 그런데 11부터는 2가지 분야로 인터페이스를 분리했다. ID3D11Device와 ID3D11DeviceContext인데 디바이스는 리소스 관리를, 콘텍스트로 그리는 것을 담당하게 했다.

 

DX11 디바이스 컨텍스

DX11은 그래픽카드를 사용한 메모리할당과 랜더링 명령의 인터페이스를 완전히 분리했다. 그래서 두가지 행위를 동시에 하는 것이 DX9보다 쉬워졌다. 이 말은 Device로 이미지를 로드하는게 Context에 영향을 미치지 않게 되었다는 것이다.

 

!!엔진 그래픽 디바이스 cpp 코드 

 

샘플링이라는 것은 한 픽셀에 얼만큼 겹친 도형을 색칠할 것인지 얼마나 칠할 것인지를 정하는 것이다. 점이 많은 샘플링은 도형과 점이 적게 닿았으면 연하게 칠한다.

 

엔진이 끝났을때 할 것들을 세팅하기 위해 엔진 코어에 EngineEnd함수를 만들었다.