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


Функция D3DXUVAtlasCreate

Создание УФ-атласа для сетки.

Синтаксис

HRESULT D3DXUVAtlasCreate(
  _In_        LPD3DXMESH      pMesh,
  _In_        UINT            dwMaxChartNumber,
  _In_        FLOAT           fMaxStretch,
  _In_        UINT            dwWidth,
  _In_        UINT            dwHeight,
  _In_        FLOAT           fGutter,
  _In_        DWORD           dwTextureIndex,
  _In_  const DWORD           *pdwAdjacency,
        const DWORD           *pdwFalseEdges,
  _In_        FLOAT           *pfIMTArray,
  _In_        LPD3DXUVATLASCB pCallback,
  _In_        FLOAT           fCallbackFrequency,
  _In_        LPVOID          pUserContext,
  _In_        DWORD           dwOptions,
  _In_        LPD3DXMESH      *ppMeshOut,
  _Out_       LPD3DXBUFFER    *ppFacePartitioning,
  _Out_       LPD3DXBUFFER    *ppVertexRemapArray,
  _Out_       FLOAT           *pfMaxStretchOut,
  _Out_       UINT            *pdwNumChartsOut
);

Параметры

pMesh [in]

Тип: LPD3DXMESH

Указатель на входную сетку (см. ID3DXMesh), которая содержит геометрию объекта для вычисления атласа. По крайней мере сетка должна содержать данные о положении и двухd-координаты текстуры.

dwMaxChartNumber [in]

Тип: UINT

Максимальное количество диаграмм для секционирования сетки. См. примечания о режимах секционирования. Используйте 0, чтобы сообщить D3DX, что атлас должен быть параметризован на основе растяжения.

fMaxStretch [in]

Тип: FLOAT

Допустимый объем растяжения. 0 означает, что растяжение не допускается, 1 означает, что можно использовать любое количество растяжения.

dwWidth [in]

Тип: UINT

Ширина текстуры.

dwHeight [in]

Тип: UINT

Высота текстуры.

fGutter [in]

Тип: FLOAT

Минимальное расстояние (в текселях) между двумя диаграммами в атласе. Желоб всегда масштабируется на ширину; Таким образом, если для текстуры 512x512 используется желоб 2,5, то минимальное расстояние между двумя диаграммами составляет 2,5 / 512,0 текселей.

dwTextureIndex [in]

Тип: DWORD

Отсчитываемый от нуля индекс координат текстуры, определяющий набор координат текстуры для использования.

pdwAdjacency [in]

Тип: const DWORD*

Указатель на массив данных соседства. с 3 DWORD на каждое лицо, указывающее, какие треугольники примыкают друг к другу (см. ID3DXBaseMesh::GenerateAdjacency).

pdwFalseEdges

Тип: const DWORD*

Массив с 3 DWORDS на лицо. Каждое лицо указывает, является ли ребро false или нет. Не ложное ребро обозначается -1, а ложное ребро — любым другим значением. Это позволяет параметризация сетки четырехугольника, где ребра вниз посередине каждого квадроцикла не будут вырезаны.

pfIMTArray [in]

Тип: FLOAT*

Указатель на массив интегрированных тензоров метрик, описывающий растяжение треугольника (см. статью IntegratedMetricTensor).

pCallback [in]

Тип: LPD3DXUVATLASCB

Указатель на функцию обратного вызова (см. LPD3DXUVATLASCB), которая полезна для мониторинга хода выполнения.

fCallbackFrequency [in]

Тип: FLOAT

Укажите, как часто D3DX будет вызывать обратный вызов; Разумное значение по умолчанию — 0,0001f.

pUserContent [in]

Тип: LPVOID

Указатель на определяемое пользователем значение, которое передается в функцию обратного вызова; обычно используется приложением для передачи указателя на структуру данных, которая предоставляет контекстные сведения для функции обратного вызова.

dwOptions [in]

Тип: DWORD

Укажите качество созданных диаграмм. См. раздел D3DXUVATLAS.

ppMeshOut [in]

Тип: LPD3DXMESH*

Указатель на созданную сетку с атласом (см. ID3DXMesh).

ppFacePartitioning [out]

Тип: LPD3DXBUFFER*

Указатель на массив окончательных данных секционирования лиц. Каждый элемент содержит по одному DWORD на лицо (см. ID3DXBuffer).

ppVertexRemapArray [out]

Тип: LPD3DXBUFFER*

Указатель на массив переопределенных вершин. Каждый элемент массива идентифицирует исходную вершину, из которых была получена каждая окончательная вершина (если вершина была разделена во время переназначения). Каждый элемент массива содержит по одному DWORD на каждую вершину.

pfMaxStretchOut [out]

Тип: FLOAT*

Указатель на максимальное значение растяжения, созданное алгоритмом atlas. Диапазон находится в диапазоне от 0,0 до 1,0.

pdwNumChartsOut [out]

Тип: UINT*

Указатель на количество диаграмм, созданных алгоритмом атласа. Если значение dwMaxChartNumber слишком низкое, этот параметр возвращает минимальное количество диаграмм, необходимых для создания атласа.

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

Тип: HRESULT

Если функция выполнена успешно, возвращаемое значение будет D3D_OK; В противном случае значение равно D3DERR_INVALIDCALL.

Комментарии

D3DXUVAtlasCreate может секционировать геометрию сетки двумя способами:

  • На основе количества диаграмм
  • На основе максимально допустимого значения растяжения. Если максимально допустимое значение растяжения равно 0, каждый треугольник, скорее всего, будет находиться в отдельной диаграмме.

Требования

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

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

Функции UVAtlas

Инструмент Command-Line UV Atlas (uvatlas.exe)