[주의 사항] D3D12 학습을 4.1.6 자원과 기술자를

렌더링 과정에서, GPU 기록 리소스 (자원) (예를 들어, 버퍼, 깊이 / 스텐실 버퍼) 자원을 판독 (예를 들어, 표면 텍스처의 외관 설명 장면 스토어 버퍼 3D 신체의 기하학적 위치). 우리는 그리기 명령을 실행하기 전에, 우리는 자원 (또는 링크) (바인드 (또는 링크)) 렌더링 파이프 라인 그리기 요청에 참조 할을 결합해야합니다. 각 무승부가 호출 될 때 일부 자원이 변경 될 수 있습니다, 그래서 우리는 필요한 경우 (호출을 그릴) 바인드 각 그리기 요청을 업데이트해야합니다. 그러나, GPU 리소스에 직접 바인딩되지 않습니다. 반대로, 참조 리소스 객체 기술자 (디스크립터 객체)함으로써, GPU 리소스 경량 구조를 기술로 간주 될 수있다. 본질적으로,이 간접 층 (간접 레벨)이며, 자원 기술자는 소정의 GPU가 필요한 실제 자원 데이터가 정보를 알게 할 수있다. 우리는 파이프 라인을 렌더링하는 바인딩 자원 그리기 호출에 지정된 설명을 참조한다.


왜 사용 설명 간접 추가적인 수준? 그 이유는 메모리 블록은 자연 자원 GPU에서 일반적인 것입니다. 유니버셜 자원 그러므로이 렌더링 파이프 라인의 다른 단계에서 사용될 수 있고, 여전히, 일반적인 예 (즉, Direct3D의 텍스쳐 렌더링) 렌더링 타겟으로서 텍스쳐의 사용이다하고 셰이더로서 사용된다 (쉐이더) 자원 (즉, 텍스처 입력 데이터)의 샘플링 셰이더로서 사용된다. 그것이 렌더 타겟, 깊이 / 스텐실 버퍼 또는 쉐이더 자원으로 사용되는지 여부를 표시하지 않는 자체 자원. 우리는 전체 자원이 주어진 경우에서 어떻게해야합니까 - 또한, 어쩌면 우리는 단지 렌더링 파이프 라인 하위 지역 자원에 대한 데이터를 바인딩 할? 또한, 당신은 자원이없는 타입 형식을 만들 수 있습니다, 그래서 심지어 GPU 자원의 형식을 알 수 없습니다.


이 기술자의 기원이다. 자원 데이터를 식별하는 것 외에도, 자원 기술자는 또한 GPU를 설명 : 그들은 자원, 당신은 우리가 설명 해당되는 경우를 지정할 수 있습니다 (즉, 당신이 무엇을 파이프 라인의 단계에 바인딩입니다) 사용 방법 Direct3D의 말씀 소 지역 자원 바인딩, 리소스 형식을 만들 때 어떤 유형으로 지정된 경우 유형을 선언 할 때, 우리는 지금 설명을 작성해야합니다.

 

루비 : 보기 (보기)의 동의어 기술자 (기술자)입니다. Direct3D의 이전 버전에서 사용 된 용어 "뷰", 여전히 Direct3D를 12 API의 일부 지역에서 사용된다. 우리는이 책에서 같은 의미로 사용 , 예를 들어, 상수, 상수 버퍼 버퍼 디스크립터도 같은 일이다.

 

기술자는 자원의 사용을 제안하는 유형이 있습니다. 우리는이 책에서 사용 설명자 유형은 다음과 같습니다
1.CBV / SRV / UAV 기술자는 상수 버퍼 (상수 버퍼), 쉐이더 자원 (쉐이더 자원) 및 정렬되지 않은 액세스보기 자원 (정렬되지 않은 액세스보기 자원)에 대해 설명 .
2. 샘플링 기술자 (샘플러 디스크립터) (텍스쳐 (텍스쳐) 미국) 샘플러 리소스를 설명한다.
3.RTV 기술자는 대상 자원 렌더링에 대해 설명합니다.
3.DSV 기술자는 깊이 / 스텐실 (깊이 / 스텐실) 리소스에 대해 설명합니다.


힙 기술자 (디스크립터 힙) 기술자 배열 (배열)이며 그것은 모든 메모리 기술자 지원 어플리케이션에 의해 사용되는 특정 유형이다. 기술자의 각 유형에 대해 별도의 설명 힙이 필요합니다. 또한 여러 힙 기술자의 동일한 유형을 만들 수 있습니다.


우리는 다수의 기술자가 같은 자료를 참조 할 수 있습니다. 예를 들어, 우리는 자원을 참조하는 다른 하위 지역 기술자의 복수를 할 수 있습니다. 위에서 언급 한 바와 같이 또한, 자원은 렌더링 파이프 라인의 여러 단계에 바인딩 할 수 있습니다. 각 단계의 경우, 우리는 별도의 설명이 필요합니다. RTV 유형 설명 및 SRV 유형 설명 : 예를 들어 대상 질감과 쉐이더 자원을 렌더링, 우리는 두 디스크립터를 작성해야합니다. 더 타입 포맷을 사용하지 않는 자원을 생성하는 경우와 마찬가지로, 사용자가 예를 들어, 플로팅 포인트 텍스쳐 요소 또는 정수 값으로 간주 될 수 있으며,이 두 가지 설명을 필요로하는 기술자는 부동 소수점 형식을 지정, 다른 기술자는 지정된 정수 형식입니다.


기술자는 초기화시에 작성해야합니다. 어떤 종류의 검사 및 확인 (발생하는 어떤 종류의 검사 및 검증이 때문이다), 최고의 대신 런타임의 초기화 시간이 작업을 수행하는가 있었다 때문이다.

 

(!) 참고 : 2009년 8월 SDK 문서는 말했다 :. "자원 제한 형식은 그것을 만들 것이다 자원 (완전 형식의 자원)의 완전한 형식을 만듭니다 그래서 [...]이 가능 런타임 액세스를 최적화 할 수 있습니다." 당신은 그들이 제공하는 유연성을 필요로 할 경우, 당신은 자원의 유형을 생성해서는 안 (데이터의 여러 뷰를 재 해석하는 다양한 방법으로 사용할 수 있습니다) 그렇지 않으면 완전한 자원 유형을 만들 수 있습니다.

 

추천

출처www.cnblogs.com/heben/p/11324834.html