과거 자료
[DX12] Microsoft::WRL::ComPtr
Fuji
2022. 12. 12. 03:33
특징
- 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
ComPtr 클래스
자세한 정보: ComPtr 클래스
learn.microsoft.com