특징
- Microsoft::WRL::ComPtr이라는 템플릿 클래스를 제공한다.
- 프로그래머가 일일이 메모리 해제를 해주지 않아도 된다.
( 범위를 벗어난 포인터는 자동으로 메모리 해제가 된다. ) - COM이 사용된 객체는 접두어 I를 붙이는게 관례이다. ( ex. ID3D12CommandList )
선언 방법
ComPtr<자료형 타입> 변수명
#include <wrl.h>
// == Microsoft::WRL::ComPtr<ID3D11Device> device 축약형
using Microsoft::WRL::ComPtr;
// ComPtr 선언
ComPtr<ID3D11Device> device;
// ComPtr 사용
device.Get() // 포인터.
device.GetAddressOf() // 포인터의 주소.
// 참조할 때는 일반 포인터와 마찬가지
*device
인터페이스
- Get()
ComPtr에 지정된 타입의 포인터를 반환한다. - GetAddressOf()
ComPtr 내부의 데이터 멤버 포인터의 주소를 반환한다.
createCommandAllocator( Comptr(변수).GetAddressOf() );
위 처럼 어떠한 포인터를 전달 받을때에 유용하게 사용된다. - Reset()
ComPtr의 데이터 멤버를 nullptr로 설정하고 참조 횟수를 1 감소시킨다.
(= 혹은 ComPtr에 직접 nullptr로 설정해도 참조 횟수가 감소한다. )
참고 사이트
그외 세부 사항은 아래 링크를 참고하자.
https://learn.microsoft.com/ko-kr/cpp/cppcx/wrl/comptr-class?view=msvc-170
'과거 자료' 카테고리의 다른 글
[DX12] IDXGISwapChain (dxgi.h) (0) | 2022.12.12 |
---|---|
[DX12] Texture format (텍스처 형식) (0) | 2022.12.12 |
[DX12] DirectX12 노트 정리 계획 (0) | 2022.12.11 |
[#5] (펌) Transpose 사용 이유와 HLSL의 열우선 이유 (0) | 2022.12.01 |
C++ 대입 연산 제한시키기 (0) | 2022.11.25 |