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_PART 和 D3DKMDT_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