최적화된 질감 API

세 가지 새로운 기능은 DirectDrawSurface 개체에 적용할 수 있는 최적화 수준을 나타냅니다. DirectX 6.0 이상에서는 이러한 대문자 비트로 텍스처만 표시할 수 있습니다. 의미 체계는 텍스처와 동일하지 않을 수 있지만, 최적화된 표면 패러다임은 나중에 다른 유형의 표면을 커버하도록 확장될 수 있습니다.

이러한 문제를 해결하기 위해 DirectDrawSurface7:: Create 메서드에 세 개의 새 플래그가 제공됩니다. 이러한 세 가지 플래그 중 어느 것도 지정되지 않은 경우 패치 또는 스위즐 여부를 결정하는 것은 드라이버에 맡기게 됩니다. 이러한 플래그는 다음과 같습니다.

DDSCAPS2_HINTDYNAMIC
스트리밍 비디오 또는 절차 텍스처와 같은 용도로 이 표면이 자주 잠겨 있음을 드라이버에 나타냅니다(예: 프레임당 한 번). 이 캡은 드라이버로 열거된 모든 텍스처 표면 형식에 대해 작동해야 합니다. 드라이버는 특히 오버헤드가 필요한 경우 이러한 텍스처에 대한 변환을 피해야 합니다.

DDSCAPS2_HINTSTATIC
이는 IDirect3DDevice7::LoadIDirectDrawSurface7::Blt 메서드(Direct3D SDK 및 DirectDraw SDK 설명서에 각각 설명됨)에서 표면을 다시 정렬/다시 정렬/swizzled할 수 있음을 드라이버에 나타냅니다. 이 작업은 텍스처의 크기를 변경하지 않습니다. 애플리케이션이 여전히 이러한 비트를 잠글 수 있기 때문에 비교적 빠르고 대칭적입니다(이렇게 할 때 성능이 저하되더라도). 드라이버는 이러한 표면에서 잠금을 실패할 수 없으므로 손실 압축 기술을 사용할 수 없습니다. 이 경우 MIP 맵 표면을 인터리브할 수 있습니다.

이 캡은 어떤 상황에서도, 특히 성능 혜택이 발생하지 않는 상황에서 스위즐을 강제하기 위한 것이 아닙니다. 일부 텍셀 형식은 자동으로 스위즐하지 못할 수 있습니다.

DDSCAPS2_OPAQUE
이는 애플리케이션에서 이 화면에 다시 액세스하지 않음을 드라이버에 나타냅니다. 이 플래그는 DDSCAPS2_HINTSTATIC 플래그처럼 동작하지만 하드웨어별 압축 체계를 사용하여 실제 압축을 허용합니다. 이 작업은 비교적 느리지만 간단한 대칭 압축 구성표(예: YUV 4:2:0 또는 색 셀 압축)를 사용하여 압축 비율을 2에서 6배로 제공해야 합니다. VQ와 같은 비대칭 체계는 허용되지 않는 벤치마크를 초래하기 때문에 여기서 사용해서는 안 됩니다.

MIP 맵 텍스처는 드라이버에서 임의로 인터리브할 수 있습니다. 이 기술은 디스크에서 텍스처가 로드되는 경우와 같이 내부 렌더링 루프 외부에서만 요청해야 합니다. 이러한 텍스처가 로드된 후의 힙 크기 보고서는 압축이 적용된 경우 감소된 메모리 사용량을 반영합니다. 텍스처에 추가 헤더 오버헤드가 있으므로 많은 작은 텍스처를 압축해도 예상할 수 있는 만큼의 메모리가 절약되지 않습니다.

일반적으로 텍스처 압축 비율 또는 이 플래그에 내포된 압축 품질에 대한 보장은 없습니다.

이 플래그를 사용하여 만든 Surface는 다음과 같은 경우에 실패합니다.

IDirectDrawSurface7::Lock 메서드를 호출합니다.

IDirectDrawSurface7::GetDC 메서드를 호출합니다.

이러한 표면에 대한 하위 영역 Blt입니다.

이러한 표면의 모든 Blt입니다.

이러한 표면에 데이터를 배치하는 유일한 방법은 IDirect3DDevice7::Load 메서드(Direct3D SDK 설명서에 설명됨) 또는 전체 Surface Blt 호출을 사용하는 것입니다. IDirectDrawSurface7::LockIDirectDrawSurface7::GetDC에 대한 자세한 내용은 DirectDraw SDK 설명서를 참조하세요.