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 路径。

旋转 的输出值是 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;
}

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

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