Stretch Blit 작업 지원

드라이버가 스트레치 블릿을 수행하는 방법은 드라이버가 실행되는 플랫폼에 따라 달라집니다. Windows 98/Me 플랫폼의 경우 드라이버의 DdBlt 함수가 blit 요청을 받으면 드라이버는 rOrigDest의 잘리지 않은 직사각형 영역에서 스트레치 팩터를 계산하고 DD_BLTDATA 구조체의 rOrigSrc 멤버에서 스트레치 팩터를 계산하고 블릿 작업을 수행할 때 계산할 수 있습니다.

NT 기반 운영 체제의 DirectX 9.0 이상에서 드라이버는 DD_BLTDATA dwFlags 멤버에 설정된 DDBLT_EXTENDED_FLAGS 및 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR 플래그를 사용하여 blit 요청을 받으면 스트레치 팩터를 계산하고 기록할 수 있습니다. 드라이버는 rSrc 및 bltFX 멤버에 있는 rSrc 및 bltFX 멤버의 매핑되지 않은 원본 및 대상 사각형 영역에서 각각 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR 설정된 DD_BLTDATA 스트레치 팩터를 계산합니다. 드라이버는 bltFX에서 DDBLTFX 구조체의 다음 멤버에서 매핑되지 않은 대상 사각형 영역을 가져와야 하며 rDest 멤버의 정보를 사용하지 않아야 합니다.

  • DDBLTFX의 ddckDestColorkey 멤버에 있는 DDCOLORKEY 구조체의 다음 멤버에서 왼쪽 및 위쪽 좌표:
    • DDCOLORKEY의 dwColorSpaceLowValue 멤버에서 왼쪽 좌표입니다.
    • DDCOLORKEY의 dwColorSpaceHighValue 멤버의 위쪽 좌표입니다.
  • DDBLTFX의 ddckSrcColorkey 멤버에 있는 DDCOLORKEY 구조체의 다음 멤버에서 오른쪽 및 아래쪽 좌표입니다.
    • DDCOLORKEY의 dwColorSpaceLowValue 멤버에서 오른쪽 좌표입니다.
    • DDCOLORKEY의 dwColorSpaceHighValue 멤버의 아래쪽 좌표입니다.

드라이버는 이러한 좌표를 DWORD가 아닌 부가 정수로 해석합니다. 또한 드라이버는 스트레치 팩터를 계산하고 그래픽 디바이스에서 스트레치 팩터를 프로그래밍하기 전에 이러한 좌표가 형성하는 사각형의 유효성을 검사해야 합니다. DDBLTFX 및 DDCOLORKEY에 대한 자세한 내용은 최신 DirectDraw SDK 설명서를 참조하세요.

드라이버가 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR 집합이 있는 블릿을 받으면 드라이버는 클리핑되지 않은 사각형 영역을 사용하여 실제 Blitting을 수행해서는 안 됩니다.

이후에 드라이버가 DDBLT_PRESENTATION 및 DDBLT_LAST_PRESENTATION 플래그가 설정된 blit 요청을 받으면 드라이버는 blit 연산에서 이 기록된 스트레치 팩터를 고려할 수 있습니다. 드라이버가 DDBLT_LAST_PRESENTATION 플래그 집합으로 최종 블릿을 완료한 후 드라이버는 후속 블릿과의 간섭을 방지하기 위해 스트레치 팩터 레코드를 지워야 합니다. DDBLT_PRESENTATION 및 DDBLT_LAST_PRESENTATION 플래그에 대한 자세한 내용은 프레젠테이션을 참조 하세요.

스트레치 팩터는 부동 소수점 계산이므로 모든 그래픽 디바이스에서 지원할 수 있는 것은 아닙니다. 따라서 이러한 디바이스에 대한 드라이버는 스트레치 팩터를 계산하고 사용할 필요가 없습니다. 그러나 스트레치 팩터 계산이 지원되지 않는 경우에도 NT 기반 운영 체제의 DirectX 9.0 이상 드라이버는 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR 플래그가 설정된 실제 블릿 작업을 수행하려고 하면 렌더링 손상이 발생하므로 DDBLT_EXTENDED_PRESENTATION_STRETCHFACTOR 플래그가 있는지 확인해야 합니다.

확장된 블릿 플래그에 대한 자세한 내용은 확장 Blt 플래그를 참조하세요.