Поделиться через


функция 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 включительно, соответствующее части OFFSET D3DKMDT_VIDPN_PRESENT_PATH_ROTATION значения констант. Выходное значение 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;
}

Если отображаемое содержимое должно быть поворачивается драйвером, выходные данные этой функции представляют собой общий поворот (элемент Rotateструктуры DXGK_PRESENTFLAGS ), который драйвер должен применить к пикселям, указанным в операции DxgkDdiPresent . Дополнительные сведения см. в разделе Поддержка поворота 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

D3DKMDT_VPPR_GET_OFFSET_ROTATION

DXGK_PRESENTFLAGS

DxgkDdiPresent