본문 바로가기
Development

DirectX 12 를 공부하면서

by LiiYuu 2021. 7. 3.

DXR 도 써볼 겸 해서 최근에 DirectX 12 공부를 시작했는데

 

dx12 를 공부하면서 느낀 것은

먼저 11 때까지는 정말 드라이버가 많을 것을 해줬다는 것을 느끼게 된 것 같다..

11 에서는 그냥 뷰 생성해서 던져주고, map/unmap 으로 리소스 올려주고 Draw 하면 끝이었는데

12 에서는 디스크립터 힙을 생성해주고 안에 디스크립터(view)를 채워주고, 리소스도 그냥 넘기는게 아니라 upload 힙 생성해서 범위 지정해서 copy 하고.. 정말 복잡하다. (사실 11까지는 드라이버가 뒤에서 다 알아서 해줬다)

 

명령도 실행하면 바로 실행되는 게 아니라 (찾아보니 11도 사실 보통 바로 작동하지도 않음)

CommandList 에 꾹꾹 넣어서 Execute 해야 GPU 에서 돌아가고~

그리고 싱글 스래드로 fence 걸고 wait 하다 보면 느리니깐 스레드 돌려서 GPU 큐 꽉꽉 채우면서 안 놀도록 만들고...

 

11 에서 한두 줄이면 끝나는 것은 12 에서는 몇 배로 늘어나버린

참으로 DirectX 12 가 왜 저수준 API 인지를 참으로 알게 된

 

 

공부하면서 여러 저수준의 개념들이 나오다 보니, 하드웨어와 OS 에 대해 좀 더 알게 되기도 하고 여러모로 좋은 경험이었던~ (물론 극히 일부이겠지만 ㅋㅋ..)

 

최근 차세대 API 라고 하며 나오는 vulkan, metal 이런 것도 dx12 처럼 비슷하게 되어있다고 하는데, 나중에 vulkan 용 렌더러 만들어서 크로스 플랫폼 도전해보면 재밌을 듯