🎨DirectX

[DX] Model Material Render (DiffuseMap)

공대 컴린이 2023. 5. 8. 12:54
728x90

이전 학습을 통해 Material 파일을 Export하여 "_Textures" 경로에 .material 파일을 저장해두었다.

이번에는 해당 .material 파일을 읽어들여 Model의 Mesh에 입히는 작업을 수행하였다.

 

ModelRender 객체를 생성하며 .material이 저장되어있는 경로를 ReadMaterial 함수에 전달해준다.

 

ReadMaterial 함수에서는 xml 코드로 저장해두었던 .material 파일을 읽어들이기 위해 똑같이 TINYXML 라이브러리를 사용하였다.

 

xml 코드의 root를 먼저 읽어들인 후, root 노드의 자식들에 접근하며 material 정보를 수집하였다.

 

 

차례로 Texture 정보Color의 정보를 읽어와 material 객체에 저장하였다.

 

읽어들인 material 객체를 ModelMesh 클래스의 Render에서 Render해주고, 

 

Material의 Render 함수가 호출되며 저장되어있는 Material 정보들의 Resource ID3D11ShaderResourceView 로 전달된다.

 

Model.fx

이를 전달받은 쉐이더 파일의 PS 단계에서는 DiffuseMap의 색상을 추출하여 음영을 곱한 후 반환해주었다.

 

프로그램을 실행시켜보면 흰색으로만 출력되던 Mesh에 Material들이 입혀져 정상 출력된 결과를 확인할 수 있었다.

728x90