2023. 6. 19. 21:23ㆍDirectX12
0. 장치 초기화에서 표류된지 40일
5월 10일에 게시했던 글을 업로드 한지 40일이 되었는데 아무리 생각해도 미친 짓이 맞다. 뭔가를 쓰려거든 알고 써야 한다는 이야기를 들은 적이 있었고 나도 거기에 동의했기 때문이다. 그래서 지금까지 계속 이해가 될 때까지 장치 초기화라는 내용을 가지고 다른 곳을 드나들면서 자세하게 정리를 하면서 내 머릿속에 넣으려고 했었다. 그런데도 찝찝한 기분이 가시지를 않아서 Rookiss님의 강의 섹션 11의 장치 초기화를 봤는데 그제서야 찝찝한 기분이 가시게 되었다. 하지만 그것이 절대로 내가 모르던 것을 알게 되었기 때문은 아니었다.
1. 외우지 마! 이해하지도 마!
본인이 공부를 하려고 하는데 옆에서 이런 소리를 하고 있으면 기분이 어떨 것 같은가? 사람마다 반응은 다르겠지만 나는 그냥 무시하고 계속 하던 걸 계속하게 될 것 같다. 사실 C++을 공부하거나 자료구조, 알고리즘같은 것을 공부하고자 한다면 모르는 것을 전부 이해하고 넘어가려 하는 자세는 아주 좋은 자세이다. 모르는 것에서 혹은 자신이 잘 이해한 것이 맞는지 확신이 서지 않는 찝찝한 상황은 결코 그냥 넘어가서는 안된다.
근데 이 소리를 하는 사람이 DX12를 가르치는 강사라면 어떨까? 놀랍게도 Rookiss라는 분의 강의에 따르면 강의 시작 전에 DX12에 나오는 각 함수들이 뭘 하는지 매개 변수는 어떤 역할을 하는지 전부 외우려 하지도 말고 전부 이해하고 넘어가려고 하지도 말라고 아예 못을 박았다. 맨 처음 DX12를 공부하려는 사람들 중에서 장치 초기화에서 나가 떨어지는 사람이 많다고 이야기했고 그 이유가 바로 앞서 얘기했던 것과 같은 내용이다. 전부 다루려고 하다보니 지쳐서 떨어지는 것이다. 그럼 어떻게 공부하라는 것일까?
2. 외우지도 말고 이해하지도 마라. "숲을 봐라"
그래픽스 API를 처음 공부하려고 할 때, 많은 사람들이 DX12를 추천하지 않는 이유가 무엇인지 아는가? 그래픽스 API에서 가져야 하는 중요한 자세가 숲을 보는 자세이다. 여기서 함수 하나하나, 클래스 하나하나 일일히 전부 외우거나 이해하려고 하면 그것이 숲을 보지 못하고 나무를 보는 것을 의미한다는 것이다. 즉, 거시적인 관점에서 CPU가 GPU에게 명령을 내리는 전체적인 흐름을 이해해야 한다는 것이다.
그런데 DX12는 높은 성능과 퀄리티를 내는 것에 유리한만큼 제공해주는 함수도 많고 DX12를 사용하는 사용자가 해줘야 하는 것이 상당히 많다. 그렇기 때문에 초보자들이 맨 처음 DX12를 공부하기 위해 진입하게 되면 대부분이 DX12에서 제공하는 자잘한 함수, 매개변수, 클래스를 하나하나 파고 있느라 진도가 안나가게 된다. 그래픽스 API를 통해 GPU에게 명령을 내리는 흐름과 엔진의 전체적인 부분을 보는 관점을 해치게 된다는 것이다.
또한 그 분의 말씀에 따르면 아무리 고수라고 하더라도 그래픽스 API의 장치 초기화에 대한 코드를 그냥 짤 수 있는 사람은 없다고 이야기했다. 즉, 그 분들도 인터넷이나 교재가 없으면 모의 엔진을 위한 장치 초기화 코드를 짤 수 없다는 뜻이다. 나는 이 이야기가 "그래도 안보고 코드로 짤 수는 있어야 하지 않을까?" 라는 생각을 완전히 차단하기 위한 발언으로 생각했다. 그리고 이런 생각은 나만 했던 것이 아닐 거라고 생각한다.
3. 결론
DX12에서 장치 초기화를 하는데 나처럼 표류하는 사람이 있다면 찝찝한 기분을 참고 실습을 따라 하면서 진도를 밀고 나가거나 지금이라도 늦지 않았으니 DX12보다 낮은 버전을 찾을 것을 추천한다. DX11보다 더 많은 것을 할 수 있고 더 높은 성능을 낼 가능성이 있는 것은 사실일지 몰라도 그걸 처음 접하는 사람이 다루기는 매우 어렵다. 만약 DX12를 정주행하고자 한다면 첫 정주행은 그냥 실습 따라하기만 하면서 나가보고 어차피 정주행 2, 3번은 더 해야할테니 그 때 가서 하나하나 알아보는 것을 추천한다.
'DirectX12' 카테고리의 다른 글
루키스 게임수학 정주행 5회차 - 장치 초기화 최종 정리 (2) | 2023.07.06 |
---|---|
DirectX12 개념 블로그 정주행 1회차 - Device와 CommandQueue (0) | 2023.06.08 |
루키스 게임수학 정주행 3회차 - 장치 심화 (0) | 2023.06.06 |
루키스 게임수학 정주행 2회차 - 번외(버그) (0) | 2023.05.17 |
루키스 게임수학 정주행 2회차 - 장치 초기화 (2) | 2023.05.10 |