D3DKMDT_VPPR_GET_CONTENT_ROTATION 函数 (d3dkmdt.h)

一个帮助程序函数,用于从 D3DKMDT_VIDPN_PRESENT_PATH_ROTATION 枚举的给定值中提取用户从默认显示方向中看到的组合旋转。 此值实际上是偏移角和桌面窗口管理器 (DWM) 已旋转主克隆路径内容的角度之和。 只有支持与路径无关的旋转 (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION) 的驱动程序才应调用此函数。

语法

D3DKMDT_VIDPN_PRESENT_PATH_ROTATION D3DKMDT_VPPR_GET_CONTENT_ROTATION(
  D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation
);

参数

Rotation

输入时, D3DKMDT_VIDPN_PRESENT_PATH_ROTATION 枚举中的 值。

在输出中,一个介于 1 和 4(含)之间的值,对应于D3DKMDT_VIDPN_PRESENT_PATH_ROTATION常量值的 OFFSET 部分。 输出值 1 (标识) 表示 0 度的总旋转,2 表示 90 度,依依此。 输出值为 0 表示未初始化 VidPN 路径。

Rotation 的输出值是D3DKMDT_VPPR_GET_CONTENT_ROTATION_PARTD3DKMDT_VPPR_GET_OFFSET_ROTATION函数减 1 的输出值之和。

返回值

返回的值对应于旋转角度和偏移角度,如下所示:

输入枚举值 输入枚举常量 旋转 + 偏移量,以度为单位 输出旋转值
0 D3DKMDT_VPPR_UNINITIALIZED - 0
1 D3DKMDT_VPPR_IDENTITY 0 1
2 D3DKMDT_VPPR_ROTATE90 90 2
3 D3DKMDT_VPPR_ROTATE180 180 3
4 D3DKMDT_VPPR_ROTATE270 270 4
5 D3DKMDT_VPPR_IDENTITY_OFFSET90 90 2
6 D3DKMDT_VPPR_ROTATE90_OFFSET90 180 3
7 D3DKMDT_VPPR_ROTATE180_OFFSET90 270 4
8 D3DKMDT_VPPR_ROTATE270_OFFSET90 0 1
9 D3DKMDT_VPPR_IDENTITY_OFFSET180 180 3
10 D3DKMDT_VPPR_ROTATE90_OFFSET180 270 4
11 D3DKMDT_VPPR_ROTATE180_OFFSET180 0 1
12 D3DKMDT_VPPR_ROTATE270_OFFSET180 90 2
13 D3DKMDT_VPPR_IDENTITY_OFFSET270 270 4
14 D3DKMDT_VPPR_ROTATE90_OFFSET270 0 1
15 D3DKMDT_VPPR_ROTATE180_OFFSET270 90 2
16 D3DKMDT_VPPR_ROTATE270_OFFSET270 180 3

注解

此函数在 D3dkmdt.h 中内联声明为:

__inline
D3DKMDT_VIDPN_PRESENT_PATH_ROTATION 
    D3DKMDT_VPPR_GET_CONTENT_ROTATION(
        D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation)
{
    if ((Rotation >= D3DKMDT_VPPR_IDENTITY_OFFSET90) &&
        (Rotation <= D3DKMDT_VPPR_ROTATE270_OFFSET270))
    {
        D3DKMDT_VIDPN_PRESENT_PATH_ROTATION ContentPart = 
            D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART(Rotation);
        D3DKMDT_VIDPN_PRESENT_PATH_ROTATION OffsetPart =
            D3DKMDT_VPPR_GET_OFFSET_ROTATION(Rotation);
        Rotation = (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION)(
            (((ContentPart - 1) + (OffsetPart - 1)) % 4) + 1);
    }
    return Rotation;
}

如果呈现的内容必须由驱动程序旋转,则此函数的输出表示 (DXGK_PRESENTFLAGS结构的 Rotate 成员的总旋转) 驱动程序需要应用于 DxgkDdiPresent 操作中提供的像素。 有关详细信息,请参阅 支持 Path-Independent 轮换

下面是此函数如何向驱动程序提供正确轮换内容所需的信息的示例。 当纵向优先设备在克隆模式下连接到横向优先监视器,并且用户将“显示”控制面板中的“方向”更改为“纵向”时,这表示纵向优先设备的默认方向。 因此,驱动程序应将值设置为 D3DKMDT_VIDPN_PRESENT_PATH_ROTATION路径上的D3DKMDT_VPPR_ROTATE90_OFFSET270 。 然后,此函数将返回一个 Rotation 值 1 (标识) ,以指示克隆路径上显示的内容不会旋转。

要求

要求
最低受支持的客户端 Windows 8.1,DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION
最低受支持的服务器 Windows Server 2012 R2
目标平台 桌面
标头 d3dkmdt.h

另请参阅

D3DKMDT_VIDPN_PRESENT_PATH_ROTATION

D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART

D3DKMDT_VPPR_GET_OFFSET_ROTATION

DXGK_PRESENTFLAGS

DxgkDdiPresent