DirectX 12(9)
-
루키스 게임수학 정주행 5회차 - 장치 초기화 최종 정리
1. 시작하기 전에... 이전 포스팅부터 말했지만 스스로 리마인딩을 시키기 위해서 다시 한 번 글로 적겠다. 절대 완벽주의로 진도를 나가면 안된다. DirectX 12를 배운다는 것은 CPU가 GPU에게 그래픽 명령을 내리는 흐름을 배운다는 것을 알아야 하며 전체 흐름을 보는데 방해가 되지 않도록 나무가 아닌 숲을 보고자 노력해야 한다. 그래서 이번 포스팅부터는 각 함수, 클래스들의 자세한 사항을 적지 않을 것이다. 각 코드가 뭘 의미하는지 이해가 안가더라도 전체적인 흐름을 간단하게나마 이해했다고 판단이 들면 그냥 넘어갈 것이다. 첫 정주행은 이렇게 할 것이다. 두 번째 정주행은 언제가 될 지 모르겠지만 말이다. 2. 결국 장치 초기화란? 그래픽스 API로 엔진을 만든다는 것은 컴퓨터에게 그래픽과 관련된..
2023.07.06 -
루키스 게임수학 정주행 4회차 - "또" 장치 초기화
0. 장치 초기화에서 표류된지 40일 5월 10일에 게시했던 글을 업로드 한지 40일이 되었는데 아무리 생각해도 미친 짓이 맞다. 뭔가를 쓰려거든 알고 써야 한다는 이야기를 들은 적이 있었고 나도 거기에 동의했기 때문이다. 그래서 지금까지 계속 이해가 될 때까지 장치 초기화라는 내용을 가지고 다른 곳을 드나들면서 자세하게 정리를 하면서 내 머릿속에 넣으려고 했었다. 그런데도 찝찝한 기분이 가시지를 않아서 Rookiss님의 강의 섹션 11의 장치 초기화를 봤는데 그제서야 찝찝한 기분이 가시게 되었다. 하지만 그것이 절대로 내가 모르던 것을 알게 되었기 때문은 아니었다. 1. 외우지 마! 이해하지도 마! 본인이 공부를 하려고 하는데 옆에서 이런 소리를 하고 있으면 기분이 어떨 것 같은가? 사람마다 반응은 다..
2023.06.19 -
DirectX12 개념 블로그 정주행 2회차 - SwapChain과 Fence
1. SwapChain SwapChain의 존재 이유는 더블 버퍼링 때문이다. 더블 버퍼링이 무엇인지에 대한 설명은 아래의 링크에서 2번에 정리해 놓은 것이 있으니 이것으로 대체하며 더블 버퍼링이 무엇인지 알고 있다는 가정하에 글을 적을 것이다. https://dafher-diary.tistory.com/54 루키스 게임수학 정주행 2회차 - 장치 초기화 1. CPU vs GPU 우리가 대부분 사용하는 컴퓨터에는 CPU와 GPU라는 부품이 거의 대부분 기본적으로 장착되어 있을 것이다. 오늘 할 것은 엔진을 만드는 데 있어서 GPU에게 효율적으로 일을 시키는 일인 dafher-diary.tistory.com 더블 버퍼링은 버퍼가 2개가 필요하다. 이 2개의 버퍼를 각각 백 버퍼, 프론트 버퍼라고 한다. 백..
2023.06.09 -
DirectX12 개념 블로그 정주행 1회차 - Device와 CommandQueue
갑자기 뜬금없이 Rookiss님의 강의를 정주행하다가 블로그를 정주행하겠다는 제목이 올라와서 뜬금없을 수 있다. 근데 사실 강의를 보고 계속 공부를 하려는데 뭔가... 이해가 안되는 것이다. 더 정확히 말하자면 개운하지 않다는 것이다. 뭔가... 비주얼만 띄워놓고 말로만 설명하니까 귀로 듣는 것으로는 내용이 제대로 이해가 가지 않는 것 같았다. 다시 말해서 이대로 넘어가도 되는지 아닌지조차 스스로 확신이 서지 않았다는 것이다. 근데 이 블로그를 보고 이걸로 개념 정리를 해야겠다는 확신이 들게 되었다. 그래서 이 블로그를 정주행하면서 개념 정리도 좀 하고 Rookiss님의 강의에서 나왔던 코드들을 내 방식대로 정리도 좀 해볼 생각이다. 아래는 해당 블로그의 출처이다. 솔직히 내가 지금까지 정리했던 글보다 ..
2023.06.08 -
루키스 게임수학 정주행 3회차 - 장치 심화
사실 이전에 "장치 초기화"라는 제목으로 글을 쓴 적이 있었는데 4가지 클래스를 정의한 적이 있었다. 근데 사실 코드를 따라 치면서 이해하지 못한 부분들이 있었고 그래서 그것들을 하나하나 짚고 넘어갈 것이다. 1. GraphicDevice 간단하게 설명하면 GPU에게 명령을 내리기 위한 인터페이스로 ID3D12Device와 IDXGIFactory를 멤버로 가지고 있다. 이제 이 두 자료형이 DX12에서 어떤 역할을 하는지 알아보자. 1) ID3D12Device 리소스 관리: GPU가 그림을 그리도록 명령을 하려면 무엇을 그려야 하는지 알려줘야 한다는 사실은 너무 자명하다. 즉, 이 얘기는 GPU가 무엇을 그려야 하는지에 대한 데이터를 어딘가에 저장해야 한다는 뜻이기도 하다. 바로 이 데이터가 "리소스"이..
2023.06.06 -
루키스 게임수학 정주행 2회차 - 번외(버그)
갑자기 뜬금없이 번외가 올라와서 당황스러울 것이다. 다름이 아니고 프로젝트를 하다가 어이없는 상황을 만나게 되어서 이렇게 글을 쓰게 되었다. 인프런의 강의를 유료로 결제하면 강의 영상과 함께 예제 파일을 다운받을 수 있다. 거기에 있는 코드는 당연히 잘 돌아가야 한다. 실제로 다운받아서 실행시켰을 때, 잘 돌아갔다. 근데 문제는 내가 그걸 토대로 코드를 작성했는데 내가 짠 코드는 돌아가지 않는 것이었다. 코드가 돌아가지 않는 이유는 CreateSwapChain이라는 함수에서 SwapChain이 생성되지 않았기 때문이었다. 여러 개의 프로젝트를 만들고 예정에도 없던 틀린 그림 찾기를 하다가 깨닫게 된 것은 결국 내 실수로 발생되 버그였다는 것이다. 너무 어이없고 초보자들에게 발생하기 쉬운 실수인 것 같아서..
2023.05.17