MIP 맵 텍스처의 하위 수준 생성

디스플레이 드라이버는 DDCORECAPS 구조체의 dwCaps2 멤버의 DDCAPS2_CANAUTOGENMIPMAP 비트를 설정하여 MIP 맵 텍스처의 하위 수준 자동 생성을 지원합니다. 드라이버는 DD_HALINFO 구조체의 ddCaps 멤버에서 이 DDCORECAPS 구조를 지정합니다. DD_HALINFO 드라이버의 DrvGetDirectDrawInfo 함수에 의해 반환됩니다. 또한 디스플레이 드라이버는 형식에 대한 DDPIXELFORMAT 구조체의 dwOperations 멤버에서 D3DFORMAT_OP_AUTOGENMIPMAP 플래그를 설정하여 특정 표면 형식이 자동으로 하위 수준 생성을 지원하는지 여부를 나타냅니다.

텍스처 표면을 만들 때 Direct3D 런타임은 DDSCAPSEX(DDSCAPS2) 구조체의 dwCaps3 멤버의 DDSCAPS3_AUTOGENMIPMAP 비트를 설정하여 이 텍스처에 대한 MIP 맵 구부러짐을 자동으로 생성할 수 있음을 나타냅니다. Direct3D가 일부 텍스처에 MIP 맵 오블벨을 자동으로 생성하도록 지시하고 일부 텍스처가 자동으로 생성되지 않도록 지시하는 경우 드라이버는 다음 시나리오에 설명된 대로 이러한 텍스처에서만 blit 연산(D3DDP2OP_TEXBLT)을 수행할 수 있습니다.

  • 드라이버는 MIP 맵을 자동으로 생성하는 원본 텍스처에서 블릿할 수 없으며, 그렇지 않은 대상 텍스처에 매핑됩니다.

  • MIP 맵을 자동으로 생성하지 않는 원본 텍스처에서 드라이버가 블릿하는 경우 드라이버는 가장 일치하는 수준만 블릿합니다. 원본 텍스처의 하위 값은 무시됩니다. 대상 하위 값을 생성할 수 있습니다.

  • 마찬가지로 드라이버가 MIP 맵을 자동으로 생성하는 원본에서 대상 텍스처로 블릿하는 경우 드라이버는 가장 일치하는 수준만 표시합니다. 원본 텍스처의 하위 값은 무시됩니다. 대상 하위 값을 생성할 수 있습니다.

MIP 맵 텍스처의 난이도를 생성하기 위해 드라이버는 D3DHAL_DP2GENERATEMIPSUBLEVELS 구조와 함께 D3DDP2OP_GENERATEMIPSUBLEVELS 명령을 받습니다. 이 명령을 받으려면 텍스처의 표면 형식이 D3DFORMAT_OP_AUTOGENMIPMAP 플래그를 노출해야 합니다.

드라이버 관리 리소스의 경우 드라이버가 비디오 메모리의 리소스를 제거 및 교체할 때 드라이버는 마지막 집합 필터 형식을 사용하여 sublevels를 자동으로 생성해야 합니다. Direct3D는 리소스 제거 및 교체를 제어하지 않으므로 Direct3D는 드라이버에 D3DDP2OP_GENERATEMIPSUBLEVELS 명령을 보내지 않습니다.

Direct3D 런타임은 드라이버의 DdLock 함수를 호출하거나 다른 DDI 를 사용하여 자동 생성된 MIP 맵 텍스처의 하위 속도에 액세스할 수 없습니다. 이는 경량 MIP 맵 텍스처와 같이 자동 생성된 MIP 맵 텍스처에 대한 하위값이 "암시적"이며 드라이버에서 적절하게 지정할 수 있음을 의미합니다. 드라이버는 "완전한" 표면 데이터 구조를 지정할 필요가 없습니다. 그러나 Direct3D는 드라이버의 DdLock 또는 DdBlt 함수를 호출하거나, D3DDP2OP_BLT 명령을 보내거나, 다른 DDI( 드라이버 관리 텍스처, 동적 텍스처 또는 공급업체별 형식에만 해당)를 사용하여 자동 생성된 MIP 맵 텍스처의 최상위 수준에 액세스할 수 있어야 합니다.