리소스 잠금(Direct3D 9)

리소스를 잠그는 것은 스토리지에 대한 CPU 액세스 권한을 부여하는 것을 의미합니다. 리소스에 대해 정의된 잠금 옵션은 다음과 같습니다.

  • D3DLOCK_DISCARD
  • D3DLOCK_READONLY
  • D3DLOCK_NOOVERWRITE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_NO_DIRTY_UPDATE

잠금 플래그 및 특정 리소스와 관련된 방법에 대한 자세한 내용은 개별 리소스 잠금 메서드의 참조 페이지를 참조하세요. 애플리케이션 개발자는 D3DLOCK_DISCARD, D3DLOCK_READONLY 및 D3DLOCK_NOOVERWRITE 플래그는 힌트일 뿐입니다. 런타임은 애플리케이션이 이러한 플래그에 지정된 기능을 따르고 있음을 검사 않습니다. D3DLOCK_READONLY 지정한 다음 리소스에 쓰는 애플리케이션은 정의되지 않은 결과를 예상해야 합니다. 일반적으로 잠금 사용 플래그를 포함하여 잠금 플래그에 대해 작업하는 것은 이후 릴리스에서 작동하도록 보장되지 않으며 상당한 성능 저하가 발생할 수 있습니다.

잠금 작업 뒤에 잠금 해제 작업이 수행됩니다. 예를 들어 텍스처를 잠근 후 애플리케이션은 잠금을 해제하여 잠긴 텍스처에 대한 직접 액세스를 포기합니다. 프로세서 액세스 권한을 부여하는 것 외에도 해당 리소스와 관련된 다른 작업은 잠금 기간 동안 직렬화됩니다. 겹치지 않는 지역에서도 리소스에 대한 단일 잠금만 허용되며, 해당 표면에서 잠금 작업이 뛰어난 동안 표면에서 가속기 작업이 진행되지 않을 수 있습니다.

각 리소스 인터페이스에는 포함된 버퍼를 잠그는 메서드가 있습니다. 각 텍스처 리소스는 해당 리소스의 하위 부분을 잠글 수도 있습니다. 2D 리소스(표면)는 하위 사각형의 잠금을 허용하고 볼륨 리소스는 하위 볼륨 또는 상자의 잠금을 허용합니다. 각 잠금 메서드는 리소스를 지원하는 스토리지에 대한 포인터와 리소스 종류에 따라 데이터의 행 또는 평면 사이의 거리를 나타내는 값을 포함하는 구조를 반환합니다. 자세한 내용은 리소스 인터페이스에 대한 메서드 목록을 참조하세요. 반환된 포인터는 항상 잠긴 하위 지역의 왼쪽 위 바이트를 가리킵니다.

인덱스 및 꼭짓점 버퍼로 작업할 때 여러 잠금 호출을 수행할 수 있습니다. 그러나 잠금 호출 수가 잠금 해제 호출 수와 일치하는지 확인해야 합니다.

DXTn은 인코딩된 4x4 블록에 픽셀을 저장하며 4x4 경계에서만 잠글 수 있습니다.

Direct3D 리소스