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_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;
}
如果呈现的内容必须由驱动程序旋转,则此函数的输出表示 (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