全屏模式行为

用户模式显示驱动程序可以确定呈现设备处于全屏模式:

  • 如果在调用驱动程序的 OpenResource 函数时 pResource 参数指向的 D3DDDIARG_OPENRESOURCE 结构的 Flags 成员中设置了全屏位字段标志。

  • 如果在调用驱动程序的 CreateResource 函数时 pResource 参数指向的 D3DDDIARG_CREATERESOURCE 结构的 Flags 成员中设置了 Primary 位字段标志。

为 Microsoft DirectX 9.0 或更早版本开发的应用程序将导致 Microsoft Direct3D 运行时调用 OpenResource 以打开共享的主图面,然后 调用 CreateResource 以创建任何其他后台缓冲区。 Microsoft DirectX 9L 应用程序将导致 Direct3D 运行时调用 CreateResource (,而无需调用 OpenResource) 来创建所有交换链缓冲区。 Direct3D 运行时指定D3DDDIARG_OPENRESOURCED3DDDIARG_CREATERESOURCE结构旋转成员中的主要图面方向,pResource 参数在调用 OpenResourceCreateResource 函数时分别指向这些结构。

对于全屏设备,用户模式显示驱动程序必须锁定旋转的资源,呈现到旋转的资源,并从旋转的资源 (bitblt) 执行位块传输。 通常,用户模式显示驱动程序在旋转方向创建过渡呈现目标, (所有锁、bitblts 和呈现都将转到这些过渡呈现目标,) 横向 (主分配,即数模转换器 [DAC] 用于扫描) 的方向。 当调用用户模式显示驱动程序来翻转数据时,它会在调用 pfnPresentCb 函数以发出翻转命令之前,执行从过渡呈现目标到横向缓冲区的旋转 bitblt。

每当用户模式显示驱动程序必须执行涉及旋转资源和未旋转资源的 bitblt 时,Direct3D 运行时会在调用驱动程序的 Blt 函数时,在 D3DDDIARG_BLT 结构的 Flags 成员中指定 Rotate 位字段标志,以向驱动程序指示必须对 bitblt 进行适当的旋转。

DirectX 9L 应用程序可以感知旋转,这意味着它们将以正确的方向呈现所有内容,并正确处理旋转缓冲区的锁。 当 Direct3D 运行时为可感知旋转的应用程序创建交换链时,运行时始终将旋转指定为 D3DDDIARG_CREATERESOURCE 结构的 Rotation 成员中的 D3DDDI_ROTATION_IDENTITY ,因为用户模式显示驱动程序不需要执行任何特殊操作即可使旋转感知应用程序正常工作。