일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Dijkstra
- SQL
- Brute Force
- two pointer
- 그래프
- 스토어드 프로시저
- 이진탐색
- String
- 다익스트라
- Stored Procedure
- MYSQL
- DP
- Trie
- binary search
- Hash
- union find
- Two Points
Archives
- Today
- Total
codingfarm
7. COM 본문
- 정의 : 어떤 프로그램이나 시스템을 이루는 컴포넌트들이 상호 통신할 수 있도록 하는 메커니즘
- COM을 이용하면 DirectX의 프로그래밍 언어 독립성과 하위 호환성을 가능하게 할 수 있다.
- COM을 통해 개발자는 GPU에 종속적이지 않게 프로그래밍 가능
Comptr
- Com객체를 담기 위한 일종의 스마트 포인터
ComPtr의 여러 메서드 중 이후 포스팅에서 사용하는 것은 다음 세가지이다.
1. Get : 바탕 COM 인터페이스를 가리키는 포인터를 돌려준다.
해당 COM 인터페이스 포인터 형식의 인수를 받는 함수를 호출할 때 쓰인다.
즉, read용으로 쓰인다
ComPtr<ID3D12RootSignature> mRootSignature;
...
// SetGraphicsRootSignature는 ID3D12RootSignature* 형식의 인수를 받는다.
mCommandList->SetGraphicsRootSignature(mRootSignature.Get());
2. GetAddressOf : 바탕 COM 인터페이스를 가리키는 포인터의 주소를 돌려준다. 함수 매개변수를 통해서 COM 인터페이스 포인터를 돌려받을 때 흔히 쓰인다.
즉, write용으로 쓰인다.
ComPtr<ID3D12CommandAllocator> mDirectCmdListAlloc;
ThrowIfFailed(md3dDevice->CreateCommandAllocator
D3D12_Command_LIST_TYPE_DIRECT,
mDirectCmdListAlloc.GetAddressOf()));
3. Reset : Comptr 인스턴스를 nullptr로 설정하고 바탕 COM 인터페이스의 참조 횟수를 1 감소한다. 이 메서드를 사용하는 대신 ComPtr 인스턴스에 직접 nullptr를 배정해도 된다(역시 참조 횟수가 감소한다.)
COM은 이보다 훨씬 방대한 주제이지만, DirectX를 효과적으로 사용하는 데에는 이정도로 충분하다.
참고 : COM 인터페이스들은 이름이 대문자 I로 시작한다. 가령 명령 목록(command list)를 나타내는 COM 인터페이스의 이름은 ID3D12GraphicsCommandList이다.
'computer graphics > DirectX12' 카테고리의 다른 글
12. 다중표본화(multisampling) (0) | 2021.07.04 |
---|---|
8. 교환사슬과 더블버퍼링 (0) | 2021.07.04 |
6. 자원, 서술자 (0) | 2021.07.04 |
5. Fence (0) | 2021.07.04 |
2. COM (0) | 2021.07.04 |
Comments