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 。 此函式接著會傳回 1 (身分識別的 Rotation 值) ,表示複製路徑上顯示的內容不會旋轉。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 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