인프런 커뮤니티 질문&답변
CommandList의 GraphicsCommandList 변경이유
작성
·
109
0
코드를 따라가다 보니 기존엔 ID3D12CommandList를 사용하던걸 ID3D12GraphicsCommandList로 바꾸신 부분들이 있으신데 혹시 특별한 이유가 있을까요?
퀴즈
D3D12에서 파이프라인 상태 객체(PSO)의 주된 역할은 무엇일까요?
렌더링 리소스(버퍼, 텍스처)를 GPU에 바인딩하는 역할
렌더링에 필요한 다양한 상태(셰이더, 블렌딩 등)를 묶어서 관리하는 역할
GPU 명령어 기록 및 제출을 관리하는 역할
시스템 메모리와 GPU 메모리 간 데이터 전송을 처리하는 역할
답변 2
0
ID3D12CommandList는 그래픽스 커맨드 레코딩이 불가능합니다. 작동이 아예 불가하기 ID3D12CommandList로 사용했던 적이 없을텐데 이상하네요. 코드 라인을 긁어서 질문해주시면 좀더 자세하게 답변해드릴 수 있을것 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 반달시어머니님.
질문해주신 내용에 대해서 답변 드리겠습니다.
ID3D12CommandList와 ID3D12GraphicsCommandList의 차이점:
ID3D12CommandList: 이 인터페이스는 가장 기본적인 커맨드 리스트 인터페이스로, 실제로 커맨드 리스트에서 사용할 수 있는 모든 기능을 담고 있지 않습니다. 일반적으로 그래픽 및 컴퓨팅 작업을 포함한 모든 범용적인 작업을 처리하려면 이보다 더 구체적인 인터페이스가 필요합니다.
ID3D12GraphicsCommandList: 이 인터페이스는 그래픽 작업을 수행할 때 사용되는 커맨드 리스트입니다. 이는 다양한 그래픽 파이프라인 명령을 수행할 수 있도록 지원하며, ID3D12CommandList 인터페이스의 기능을 확장합니다. 그래픽 명령어와 더불어, 셰이더 자원 설정, 파이프라인 상태 설정, 드로우 콜 등을 처리할 수 있습니다.
왜 ID3D12GraphicsCommandList로 변경했을까?
구체적인 기능 제공: 그래픽 관련 작업을 수행하기 위해선,
ID3D12GraphicsCommandList가 제공하는 다양한 그래픽 관련 메서드가 필요합니다. 예를 들어, 드로우 콜, 그래픽 파이프라인 설정 등의 명령은ID3D12CommandList로는 할 수 없습니다.확장성과 유연성:
ID3D12GraphicsCommandList는 그래픽 작업 전용으로 보다 구체적이고 최적화된 기능을 제공하므로, 보다 효율적으로 코드를 작성할 수 있습니다. 이는 특히 그래픽 파이프라인 상태 변경, 리소스 바인딩 등에서 유용합니다.
이 때문에 기존의 ID3D12CommandList에서 ID3D12GraphicsCommandList로 변경된 것입니다. 이를 통해 보다 직관적이고 직접적으로 그래픽 명령을 설정할 수 있게 됩니다.
유사한 게시물
보다 효율적으로 프로그램을 개발하기 위해 다른 개발 관례나 전략에 대해 궁금하다면 다음 답변을 참조할 수 있습니다:
- 디버깅 할 때 훨씬 직관적입니다. 이유가 따로 있나요? - DirectX의 메모리 관리에 대한 기초적인 정보 제공.
이 링크는 DirectX와 관련된 기초 정보에 대해 살펴보는 데 도움이 될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





