리소스(Direct3D 10)
리소스는 Direct3D 파이프라인에서 액세스할 수 있는 메모리 영역입니다. 파이프라인이 메모리에 효율적으로 액세스하려면 파이프라인에 제공된 데이터(예: 입력 기하 도형, 셰이더 리소스, 텍스처 등)를 리소스에 저장해야 합니다. 모든 Direct3D 리소스가 파생되는 리소스에는 버퍼 또는 텍스처의 두 가지 유형이 있습니다. 각 파이프라인 단계에 대해 최대 128개의 리소스를 활성화할 수 있습니다.
각 애플리케이션은 일반적으로 많은 리소스를 만듭니다. 리소스의 예로는 꼭짓점 버퍼, 인덱스 버퍼, 상수 버퍼, 텍스처 및 셰이더 리소스가 있습니다. 리소스를 사용하는 방법을 결정하는 몇 가지 옵션이 있습니다. 강력한 형식의 리소스를 만들거나 더 적게 입력할 수 있습니다. 리소스에 읽기 및 쓰기 액세스 권한이 모두 있는지 여부를 제어할 수 있습니다. CPU, GPU 또는 둘 다에서만 액세스할 수 있는 리소스를 만들 수 있습니다. 당연히 속도와 기능 절충이 있을 것입니다. 리소스에 더 많은 기능을 허용할수록 예상되는 성능이 떨어지게 됩니다.
애플리케이션은 종종 많은 텍스처를 사용하므로 Direct3D는 텍스처 관리를 간소화하기 위해 텍스처 배열의 개념도 소개합니다. 텍스처 배열에는 애플리케이션 내에서 또는 셰이더에서 인덱싱할 수 있는 하나 이상의 텍스처(모두 동일한 형식 및 차원)가 포함됩니다. 텍스처 배열을 사용하면 여러 인덱스가 있는 단일 인터페이스를 사용하여 많은 텍스처에 액세스할 수 있습니다. 필요한 만큼 텍스처 배열을 만들어 다양한 텍스처 형식을 관리할 수 있습니다.
애플리케이션에서 사용할 리소스를 만든 후에는 각 리소스를 사용할 파이프라인 단계에 연결하거나 바인딩합니다. 이 작업은 리소스에 대한 포인터를 사용하는 바인딩 API를 호출하여 수행됩니다. 둘 이상의 파이프라인 단계에서 동일한 리소스에 액세스해야 할 수 있으므로 Direct3D 10에서는 리소스 뷰의 개념을 소개합니다. 뷰는 액세스할 수 있는 리소스 부분을 식별합니다. 공유 리소스에 대한 바인딩 규칙을 따르는 경우 m 보기 또는 리소스를 만들고 n 파이프라인 단계에 바인딩할 수 있습니다(그렇지 않으면 런타임에서 컴파일 시간에 오류가 생성됨).
리소스 뷰는 리소스에 액세스하기 위한 일반 모델(텍스처, 버퍼 등)을 제공합니다. 뷰를 사용하여 런타임에 액세스할 데이터와 액세스 방법을 알려줄 수 있으므로 리소스 뷰를 통해 더 적은 형식의 리소스를 만들 수 있습니다. 즉, 컴파일 시간에 지정된 크기에 대한 리소스를 만든 다음 리소스가 파이프라인에 바인딩되면 리소스 내에서 데이터 형식을 선언할 수 있습니다. 뷰는 셰이더에서 깊이/스텐실 표면을 다시 읽고, 단일 패스로 동적 큐브맵을 생성하고, 볼륨의 여러 조각에 동시에 렌더링하는 기능과 같은 리소스를 사용하기 위한 많은 새로운 기능을 노출합니다.
기본 리소스 종류, 텍스처 배열 및 리소스를 만들고 사용하는 방법에 대한 자세한 내용은 다음 다른 항목을 참조하세요.
- 리소스 종류
- 리소스 선택
- 버퍼 리소스 만드는
- 텍스처 리소스 만들기
- 리소스 데이터 복사 및 액세스
- 메모리 구조 및 뷰
- 블록 압축
- 리소스 제한 테이블
- 좌표계
- Floating-Point 규칙
- 데이터 형식 변환 규칙
- 매핑 레거시 형식
관련 항목
-
Direct3D 10 대한 프로그래밍 가이드