반응형
COM은 DX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 하는 기술임
COM객체, COM 인터페이스라고 부르지만
C++의 클래스로 간주하고 사용해도 무방함
COM인터페이스를 new키워드로 직접 생성할 일은 없음
또한 delete로 삭제하는 것이 아닌 Release 메서드를 호출해줘야함 (자동이여서 신경쓸거 없음)
COM 객체는 참조 횟수가 0이 되면 메모리에서 해제됨 ( 마치 스마트 포인터 )
COM 객체의 수명 관리를 돕기 위해 Windows 런타임 라이브러리는 ComPtr이라는 클래스를 제공함
ComPtr은 COM객체를 위한 스마트 포인터라고 할 수 있음
COM객체의 주요 함수
1. Get
- COM 인터페이스를 가르키는 포인터를 돌려줌
ComPtr<ID3D12RootSignature> mRootSignature;
mCommandList->SetGraphicsRootSignature(mRootSignature.Get());
2. GetAddressOf
- COM 인터페이스를 가르키는 포인터의 주소를 돌려줌
ComPtr<ID3D12CommandAllocator> mDirectCmdListAlloc;
ThrowIfFailed(md3dDevice0>CreateCommandAllocator(
D3D12_COMMAND_LIST_TYPE_DIRECT,
mDirectCmdListAlloc.GetAddressOf());
3.Reset
- ComPtr 인스턴스를 nullptr로 설정하고 바탕 COM 인터페이스의 참조 횟수를 1 감소함
참고 - COM 인터페이스들은 이름이 대문자I로 시작함
예를 들어 command list를 나타내는 COM 인터페이스의 이름은
ID3D12GraphicsCommandList이다
반응형
LIST
'그래픽스 > DX 기록' 카테고리의 다른 글
Cylinder (0) | 2023.08.15 |
---|---|
Light (BlinnPhong) (0) | 2023.08.15 |
텍스쳐링 (0) | 2023.08.14 |
DXGI (DirectX Graphics Infrastructure) (0) | 2022.12.12 |
교환 사슬과 페이지 전환 (0) | 2022.12.08 |