次の方法で共有


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 パスが初期化されていないことを示します。

回転 の出力値は、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 回転のサポート」を参照してください。

この関数を使用して、コンテンツを適切に回転させるために必要な情報をドライバーに提供する方法の例を次に示します。 縦向き優先デバイスが複製モードで横向き優先モニターに接続され、ユーザーが Display コントロール パネルの Orientation を [縦] に変更した場合、これは縦優先デバイスの既定の向きを表します。 したがって、ドライバーは 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
ターゲット プラットフォーム デスクトップ
ヘッダー d3dkmdt.h

関連項目

D3DKMDT_VIDPN_PRESENT_PATH_ROTATION

D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART

D3DKMDT_VPPR_GET_OFFSET_ROTATION

DXGK_PRESENTFLAGS

DxgkDdiPresent