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 列挙体の値。
出力時には、D3DKMDT_VIDPN_PRESENT_PATH_ROTATION定数値の OFFSET 部分に対応する 1 ~ 4 の値が含まれます。 出力値 1 (ID) は、合計回転の 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;
}
表示されるコンテンツをドライバーが回転させる必要がある場合、この関数の出力は、ドライバーが DxgkDdiPresent 操作で指定されたピクセルに適用する必要がある合計回転 (DXGK_PRESENTFLAGS 構造体の Rotate メンバー) を表します。 詳細については、「 Path-Independent ローテーションのサポート」を参照してください。
この関数を使用して、コンテンツを適切にローテーションするために必要な情報をドライバーに提供する方法の例を次に示します。 縦向き最初のデバイスが複製モードで横向きモニターに接続され、ユーザーが [表示] コントロール パネルの [向き] を [縦] に変更すると、縦優先デバイスの既定の向きが表されます。 そのため、ドライバーは D3DKMDT_VIDPN_PRESENT_PATH_ROTATION の値を設定する必要があります。パスにD3DKMDT_VPPR_ROTATE90_OFFSET270 します。 次に、この関数は Rotation 値 1 (ID) を返して、クローン パスに表示されるコンテンツが回転されないことを示します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8.1,DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION |
サポートされている最小のサーバー | Windows Server 2012 R2 |
対象プラットフォーム | デスクトップ |
Header | d3dkmdt.h |
こちらもご覧ください
D3DKMDT_VIDPN_PRESENT_PATH_ROTATION
D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART