다음을 통해 공유


D3D10_MAP 열거형(d3d10.h)

CPU에서 읽고 쓰기 위해 액세스할 리소스를 식별합니다. 애플리케이션은 이러한 플래그 중 하나 이상을 결합할 수 있습니다.

Syntax

typedef enum D3D10_MAP {
  D3D10_MAP_READ = 1,
  D3D10_MAP_WRITE = 2,
  D3D10_MAP_READ_WRITE = 3,
  D3D10_MAP_WRITE_DISCARD = 4,
  D3D10_MAP_WRITE_NO_OVERWRITE = 5
} ;

상수

 
D3D10_MAP_READ
값: 1
리소스는 읽기용으로 매핑됩니다. 리소스가 읽기 액세스 권한으로 만들어졌어야 합니다( D3D10_CPU_ACCESS_READ 참조).
D3D10_MAP_WRITE
값: 2
리소스는 쓰기를 위해 매핑됩니다. 리소스는 쓰기 액세스 권한으로 만들어졌어야 합니다( D3D10_CPU_ACCESS_WRITE 참조).
D3D10_MAP_READ_WRITE
값: 3
리소스는 읽기 및 쓰기를 위해 매핑됩니다. 리소스는 읽기 및 쓰기 액세스 권한으로 만들어졌어야 합니다( D3D10_CPU_ACCESS_READ 및 D3D10_CPU_ACCESS_WRITE 참조).
D3D10_MAP_WRITE_DISCARD
값: 4
리소스는 쓰기용으로 매핑됩니다. 리소스의 이전 콘텐츠는 정의되지 않습니다. 리소스는 쓰기 액세스 권한으로 만들어졌어야 합니다( D3D10_CPU_ACCESS_WRITE 참조).
D3D10_MAP_WRITE_NO_OVERWRITE
값: 5
리소스는 쓰기용으로 매핑됩니다. 리소스의 기존 내용을 덮어쓸 수 없습니다(설명 참조). 이 플래그는 꼭짓점 및 인덱스 버퍼에서만 유효합니다. 리소스는 쓰기 액세스 권한으로 만들어졌어야 합니다( D3D10_CPU_ACCESS_WRITE 참조). D3D10_BIND_CONSTANT_BUFFER 플래그를 사용하여 만든 리소스에는 사용할 수 없습니다.

설명

이 열거형은 ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::MapID3D10Texture3D::Map에 사용됩니다.

D3D10_MAP_WRITE_NO_OVERWRITE 의미

D3D10_MAP_WRITE_NO_OVERWRITE 애플리케이션이 IA( 입력 어셈블러 ) 단계에서 사용하는 데이터에 쓰지 않겠다는 것을 의미합니다. 대신 GPU를 사용하면 애플리케이션이 동일한 버퍼의 다른 부분에 쓸 수 있습니다. 애플리케이션은 IA 단계에서 사용 중인 데이터에 대해 쓰지 않도록 해야 합니다.

예를 들어 다음 다이어그램에 설명된 버퍼를 고려합니다. 꼭짓점 4-6을 사용하는 그리기 호출이 실행된 경우 이 버퍼에서 Map을 호출하는 애플리케이션은 렌더링 중에 그리기 호출이 액세스할 꼭짓점에 쓰지 않도록 해야 합니다.

다양한 사용률 단계의 꼭짓점 데이터 다이어그램 그러나 GPU는 현재 처리 중인 프레임 측면에서 CPU 뒤에 많은 프레임이 있기 때문에 이를 보장하는 것은 어려울 수 있습니다. 2~5프레임 전에 발생한 호출로 인해 사용 중인 리소스 섹션을 추적하는 것은 어렵고 오류가 발생하기 쉽습니다. 이 때문에 애플리케이션은 D3D10_MAP_WRITE_NO_OVERWRITE 사용할 때 초기화되지 않은 리소스 부분에만 쓰는 것이 좋습니다.

D3D10_MAP_WRITE_NO_OVERWRITE D3D10_MAP_WRITE_DISCARD 일반적인 사용

D3D10_MAP_WRITE_DISCARD 및 D3D10_MAP_WRITE_NO_OVERWRITE 동적 인덱스/꼭짓점 버퍼와 함께 일반적으로 사용되지만 동적 텍스처와 함께 사용할 수도 있습니다.

이러한 두 플래그의 일반적인 용도로는 동적 인덱스/꼭짓점 버퍼를 카메라의 현재 위치에서 볼 수 있는 기하 도형으로 채우는 작업이 포함됩니다. 데이터가 지정된 프레임의 버퍼에 처음 입력될 때 Map은 D3D10_MAP_WRITE_DISCARD 함께 호출됩니다. 이렇게 하면 버퍼의 이전 내용이 무효화됩니다. 그러면 버퍼가 사용 가능한 모든 데이터로 채워집니다.

동일한 프레임 내의 버퍼에 대한 후속 쓰기는 D3D10_MAP_WRITE_NO_OVERWRITE 사용해야 합니다. 이렇게 하면 이전에 설명한 제한 사항이 적용되는 한 CPU가 GPU에서 잠재적으로 사용되는 리소스에 액세스할 수 있습니다.

요구 사항

요구 사항
헤더 d3d10.h

추가 정보

리소스 열거형