공부중

[DirectX12]기본지식 - COM(Component Object Model) 본문

카테고리 없음

[DirectX12]기본지식 - COM(Component Object Model)

곤란 2018. 6. 7. 15:18
반응형

COM(Component Object Model)은 DirectX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 하는 기술이다.


필요한 COM 인터페이스를 가리키는 포인터를 특별한 함수들을 이용해서 또는 다른 COM 인터페이스의 메서드를 이용해서 얻는 방법뿐

new로 직접 생성할 필요가 없고 delete로 삭제하는것이 아닌 해당 인터페이스의 Release 메소드를 호출해 주어야 한다.

-> 모든 COM 인터페이스는 IUnknown이라는 COM 인터페이스를 상속하는데 IUnknown이 Release라는 메소드를 제공.


COM 객체의 수명 관리를 돕기 위해서 Windows Runtime Library(WRL)에서 Microsoft::WRL::ComPtr이라는 클래스를 제공한다.

-> #include <wrl.h> 가 필요


ComPtr이라는 클래스는 smart pointer이다. 자동으로 Release를 호출하므로 직접 굳이 Release를 호출할 필요는 없다.(직접할때도 있긴 하겠지?)

->레퍼런스 카운팅 방식으로 카운트가 0이면 Release를 자동 호출

ComPtr class - MSDN




반응형