DirectX (4) 썸네일형 리스트형 [DirectX 12] 렌더링 파이프라인 컴퓨터가 오브젝트 즉 도형을 표현하기 위해 사용하는 기본 단위 1. 점 2. 선 3. 삼각형(면) 특히 모든 면은 삼각형으로 표현이 가능하기 때문에, 이 삼각형이 많아질수록 연산이 많아지지만, 세밀한 표현이 가능하다. CPU와 GPU의 차이 CPU는 복잡한 연산을 잘하고 뛰어난 기억력을 가진 고급 인력(Control, ALU, Cache, DRAM), GPU는 ALU가 대부분을 차지하는 계산기가 단순히 병렬적으로 계산만을 위한 집단. 연결되는 연산, 연관성이 있는 연산은 CPU가 알맞다.(파이프라인), 그 외 단순히 연관성이 없는 단순 연산들은 GPU에 더 알맞다. 게임에서 오브젝트들은 독립적인 경우가 많기 때문에 병렬적인 특성을 가진 GPU가 연산을 하는 것이 좀 더 올바른 감이 있다. 먼저 GPU는 .. [DirectX 12] Direct3D 초기화 Direct3D를 초기화 하는 과정은 다음과 같다. 1. D3D12CreateDevice를 이용해서 ID3D12Device를 생성한다. 2. ID3D12Fence 객체를 생성하고, 서술자들의 크기를 얻는다. 3. 4X MSAA 품질 수준 지원 여부를 검사한다. 4. 커맨드 큐과 커맨드 리스트 할당자, 그리고 주 커맨드 리스트을 생성한다. 5. Swap chain을 서술한 뒤 이를 통해 생성한다. 6. 응용 프로그램에 필요한 서술자 힙들을 생성한다. 7. 후면 버퍼의 크기를 설정하고, 후면 버퍼에 대한 렌더 대상 뷰(Render target view)를 생성한다. 8. 깊이 * 스텐실 버퍼를 생성하고 이와 연관된 깊이 * 스텐실 뷰를 생성한다. 9. 뷰포트와 가위 판정용 사각형을 설정한다. 1. D3D12.. [DirectX 12] 명령 대기열 명령 대기열(Command Queue) CPU와 GPU간의 상호 작용을 하며 최적의 성능을 뽑아내기 위해서는 최대한 둘 다 바쁘게 돌아가야 한다. 즉 2가지 조건을 만족 해야 한다. 1. 병렬로 작동한다. 2. 동기화를 최소화 한다. 동기화를 최소화하는 이유는 간단하게 말해서 동기화가 일어나서 버스에서 인터럽트가 일어나서 하나의 장치가 활동을 하는 동안 다른 장치들이 놀고 있어야 한다면 이는 굉장히 성능 낭비라는 것이다. 그래서 DirectX 12에서는 GPU에 명령 대기열을 두고 CPU에서는 명령 목록(Command List)를 두어 Direct3D API를 이용해서 이 명령 목록에 그리기 명령들을 넣게 된다. 그리고 이를 명령 대기열에 제출한다. 이는 GPU가 명령 대기열에 있는 실행할 준비가 되었다.. [DirectX 12] DirectX 기초 지식 Direct3D는 Graphic Adapter / GPU를 제어하고 프로그래밍하는데 쓰이는 저수준 API -> 이를 이용해서 응용프로그램이 3D 그래픽 가속 기능을 이용해서 3차원 세계를 그려낸다. COM 객체 -> Component Object Model은 프로그램이 언어 독립성과 하위 호환성을 가능하게 해주는 기술 COM의 세부 사항은 프로그래머들에게 드러나지 않는다. 프로그래머들은 이 COM 객체를 이용해서 new를 직접할 필요 없이 관리할 수 있다. 그리고 delete 대신 Release를 이용해서 객체 메모리를 해제한다. 그리고 참조 횟수가 0이 되면 자동으로 메모리 해제를 한다. 윈도우에서는 WRL(Windows Runtime Library)를 이용해서 지원을 한다. Microsoft::WRL.. 이전 1 다음