Функция D3DXMatrixPerspectiveFovLH (D3dx9math.h)
Примечание
Служебная библиотека D3DX является устаревшей. Вместо этого рекомендуется использовать DirectXMath .
Строит левовинтовую матрицу перспективной проекции на основании поля зрения.
Синтаксис
D3DXMATRIX* D3DXMatrixPerspectiveFovLH(
_Inout_ D3DXMATRIX *pOut,
_In_ FLOAT fovy,
_In_ FLOAT Aspect,
_In_ FLOAT zn,
_In_ FLOAT zf
);
Параметры
-
pOut [in, out]
-
Тип: D3DXMATRIX*
Указатель на структуру D3DXMATRIX , которая является результатом операции.
-
fovy [in]
-
Тип: FLOAT
Поле зрения в направлении y в радианах.
-
Аспект [in]
-
Тип: FLOAT
Пропорции, определяемые как ширина пространства представления, делимая на высоту.
-
zn [in]
-
Тип: FLOAT
Z-значение ближней плоскости представления.
-
zf [in]
-
Тип: FLOAT
Z-значение дальней плоскости представления.
Возвращаемое значение
Тип: D3DXMATRIX*
Указатель на структуру D3DXMATRIX , которая является левосторонней матрицей проекции.
Комментарии
Возвращаемое значение для этой функции является тем же значением, которое возвращается в параметре pOut . Таким образом, функцию D3DXMatrixPerspectiveFovLH можно использовать в качестве параметра для другой функции.
Чтобы изменить ось пропорций, используйте формулу вычисления: fovy = 2 * math.atan(math.tan(fovy * 0,5) / aspect). Кроме того, можно добавить переменные пропорций X и Y в структуру для масштабирования пространства вертикального представления: fovy = 2 * math.atan(math.tan(fovy * 0,5) / aspectY), aspect = aspectX * aspect Y.
Эта функция вычисляет возвращаемую матрицу, как показано ниже:
xScale 0 0 0
0 yScale 0 0
0 0 zf/(zf-zn) 1
0 0 -zn*zf/(zf-zn) 0
where:
yScale = cot(fovY/2)
xScale = yScale / aspect ratio
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел