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


Функция D3DXComputeTangent

Вычисляет тангенсные векторы для координат текстуры, заданных на этапе текстуры. Предоставляется для поддержки устаревших приложений. Используйте D3DXComputeTangentFrameEx для получения лучших результатов.

Синтаксис

HRESULT D3DXComputeTangent(
  _In_       LPD3DXMESH Mesh,
  _In_       DWORD      TexStageIndex,
  _In_       DWORD      TangentIndex,
  _In_       DWORD      BinormIndex,
  _In_       DWORD      Wrap,
  _In_ const DWORD      *pAdjacency
);

Параметры

Сетка [вход]

Тип: LPD3DXMESH

Указатель на интерфейс ID3DXMesh , представляющий сетку ввода.

TexStageIndex [in]

Тип: DWORD

Индекс, представляющий этап текстуры.

TangentIndex [in]

Тип: DWORD

Индекс, предоставляющий индекс использования для тангенсных данных. Объявление вершины подразумевает использование; этот индекс изменяет использование с помощью индекса использования. Дополнительные сведения об объявлении вершин см. в разделе Объявление вершин (Direct3D 9).

BinormIndex [in]

Тип: DWORD

Индекс, предоставляющий индекс использования для бинормальных данных. Объявление вершины подразумевает использование; этот индекс изменяет использование с помощью индекса использования. Дополнительные сведения об объявлении вершин см. в разделе Объявление вершин (Direct3D 9).

Перенос [в]

Тип: DWORD

Присвойте этому значению значение 0 для отсутствия обтекания или значение 1 для упаковки в направлениях you и V.

pAdjacency [in]

Тип: const DWORD*

Указатель на массив из трех DWORD на каждое лицо для заполнения смежными индексами лиц. Число байтов в этом массиве должно быть не менее ((3 * GetNumFaces) * sizeof(DWORD)).

Возвращаемое значение

Тип: HRESULT

Если функция выполнена успешно, возвращаемое значение будет S_OK. Если функция завершается сбоем, возвращаемое значение может быть одним из следующих: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA E_OUTOFMEMORY.

Комментарии

Если в объявлении вершины сетки указаны поля тангенса или бинормального значения, D3DXComputeTangent обновит любые предоставленные пользователем тангенсы или бинормальные данные. Кроме того, задайте для TangentIndex значение D3DX_DEFAULT , чтобы не обновлять предоставленные пользователем тангенсные данные, или задайте для Параметра BinormIndex значение D3DX_DEFAULT, чтобы не обновлять предоставленные пользователем двоичные данные. Для TexStageIndex нельзя задать значение D3DX_DEFAULT.

D3DXComputeTangent зависит от объявления вершины сетки, содержащего либо бинормальное поле (BinormIndex), поле тангенса (TangentIndex) или и то, и другое. Если они отсутствуют, эта функция завершится ошибкой.

Эта функция просто вызывает D3DXComputeTangentFrameEx со следующими входными параметрами:

D3DXComputeTangentFrameEx( Mesh,
                           D3DDECLUSAGE_TEXCOORD,
                           TexStageIndex,
                           ( BinormIndex == D3DX_DEFAULT ) ?
                               D3DX_DEFAULT : D3DDECLUSAGE_BINORMAL,
                               // provides backward function compatibility
                           BinormIndex,
                           ( TangentIndex == D3DX_DEFAULT ) ?
                               D3DX_DEFAULT : D3DDECLUSAGE_TANGENT,
                           TangentIndex,
                           D3DX_DEFAULT, // do not store normals
                           0,
                           ( Wrap ? D3DXTANGENT_WRAP_UV : 0 )
                               | D3DXTANGENT_GENERATE_IN_PLACE
                               | D3DXTANGENT_ORTHOGONALIZE_FROM_U,
                           pAdjacency,
                           -1.01f,
                           -0.01f,
                           -1.01f,
                           NULL,
                           NULL);

Требования

Требование Значение
Заголовок
D3DX9Mesh.h
Библиотека
D3dx9.lib

См. также раздел

Функции сетки