소개
프로그래머
C++,x86/x64 ASM, DirectX9/11/12, Metal, OpenGL, CUDA, win32, winsock/bsd socket
Blog : https://megayuchi.com
Youtube : https://youtube.com/megayuchi
LinkedIn : https://www.linkedin.com/in/megayuchi/
강의
수강평
- D3D12 프로그래밍 - 기초편
- D3D12 프로그래밍 - 기초편
- D3D12 프로그래밍 - 기초편
게시글
질문&답변
Descriptor를 복사하는 이유
non shader visible heap을 사용하는 이유는 해당 텍스처를 여러 렌더링 상황에서 공유해서 사용하기 위함입니다. draw할때 입력된 인자에 따라 텍스처를 바꿔가면서 렌더링 한다고 가정해봅시다.shader visible 속성의 heap에 텍스처의 디스크립터를 만들게 되면 이 디스크립터는 카피가 불가능하므로 각각의 텍스처가 세팅된 디스크립터 테이블을 미리 여러 벌 만들어둬야 합니다.non shader visible 속성의 heap에 텍스처 디스크립터를 만들면 이 디스크립터는 어떤 shader visible descriptor 테이블에도 카피가 가능하므로 미리 여러벌의 desriptor table을 만들어둘 필요없이 실시간으로 텍스처를 바꿔가며 렌더링 할 수 있습니다.
- 0
- 2
- 84
질문&답변
코드에 대한질문있습니다.
IDXGIAdapter::GetDesc()함수를 사용하면 Device ID를 얻을 수 있습니다.RTX4090의 Device ID를 얻어서 다음과 같이 비교해서 4090이 아니면 스킵시키면 됩니다.내부 코드로는 이 정도로 충분하고 배포를 한다면 그래픽 카드를 선택할 수 있는 옵션을 주는게 좋겠죠.#define DEVICE_ID_RTX4090 XXXXXX...DXGI_ADAPTER_DESC desc;pAdapter->GetDesc(&adapterDesc);if (DEVICE_ID_RTX4090 != adapterDesc.DeviceId){ continue;}
- 0
- 2
- 93
질문&답변
Comptr 을 안쓸시 메모리 해제순서
d3ddevice에서 생성한 객체부터 먼저 해제하고 d3ddevice는 가장 나중에 해제하는게 기본입니다. 디버깅과 정확한 테스트를 위해서 d3d뿐 아니라 모든 com객체는 생성순서의 역순으로 해제하는게 좋습니다.
- 0
- 2
- 83
질문&답변
raw pointer 쓰시는 이유가 따로 있으신가요?
디버깅 할 때 훨씬 직관적입니다. 이게 가장 중요한 이유입니다.빌드가 빠릅니다.코드사이즈가 작게 나옵니다.런타임 속도가 더 빠릅니다. 그리고 기본적으로 예제코드는 최대한 캡슐화를 배제하고 날것으로 노출합니다. 이쪽이 코드를 분석하기 편합니다.
- 0
- 1
- 157