全屏模式行为

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

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

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

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

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

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

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