Метод ID3DXTextureGutterHelper::ResampleTex
Повторно использует текстуру для параметризации этого желоба.
Синтаксис
HRESULT ResampleTex(
[in] LPDIRECT3DTEXTURE9 pTextureIn,
[in] LPD3DXMESH pMeshIn,
[in] D3DDECLUSAGE Usage,
[in] UINT UsageIndex,
[out] LPDIRECT3DTEXTURE9 pTextureOut
);
Параметры
-
pTextureIn [in]
-
Тип: LPDIRECT3DTEXTURE9
Текстура, соответствующая исходной параметризации в pMeshIn. Эта текстура будет использоваться для создания pTextureOut.
-
pMeshIn [in]
-
Тип: LPD3DXMESH
Сетка, содержащая исходные и новые параметризации. Необходимо сохранить новую параметризацию в D3DDECLUSAGE_TEXCOORD индексе 0.
-
Использование [in]
-
Тип: D3DDECLUSAGE
Использование данных вершин (используется в сочетании с UsageIndex), которое определяет компонент объявления вершины, содержащий исходную параметризацию в pMeshIn. См . раздел D3DDECLUSAGE.
-
UsageIndex [in]
-
Тип: UINT
Отсчитываемый от нуля индекс (используется в сочетании с usage), который определяет компонент объявления вершины, содержащий исходную параметризацию в pMeshIn. Для новой параметризации требуется сочетание D3DDECLUSAGE_TEXCOORD и индекса 0; Можно использовать любое другое сочетание использования и индекса.
-
pTextureOut [out]
-
Тип: LPDIRECT3DTEXTURE9
Текстура с повторной выборкой.
Возвращаемое значение
Тип: HRESULT
Если метод выполнен успешно, возвращаемое значение будет D3D_OK. Если метод завершается ошибкой, возвращаемое значение может быть одним из следующих: D3DERR_INVALIDCALL, E_OUTOFMEMORY.
Комментарии
Параметризация в случае этой функции — это набор координат текстуры, который сопоставляет треугольники сетки с треугольниками на текстуре. Новая параметризация — это набор координат текстуры, содержащихся в вспомогательном интерфейсе желоба, а исходная параметризация — это набор координат текстуры, содержащихся во входной сетке.
Предполагается, что координаты текстуры находятся в диапазоне от 0 до 1 включительно, а новая параметризация должна быть объявлена в объявлении вершины как индекс координат текстуры 0. Исходная текстура и переизданная текстура должны иметь одинаковую ширину и высоту.
Например, чтобы подготовиться к повторной выборке текстуры:
- Создайте исходный интерфейс текстуры (pOriginalTex ниже) с помощью такой функции, как D3DXCreateTextureFromFile.
- Создайте новый интерфейс текстуры для текстуры с повторной выборкой (pResampledTex ниже). Размер этой текстуры должен соответствовать размеру (ширине и высоте) вспомогательной текстуры желоба.
- Вызовите D3DXCreateTextureGutterHelper , чтобы получить новую параметризацию, как показано ниже:
// Given:
// pMesh points to a mesh that contains the original and new texture coordinates
ID3DXTextureGutterHelper * pGutterHelper;
// Mesh vertex declaration
D3DVERTEXELEMENT9 decl[] = {
{0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
{0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0},
// contains new set of texcoords
{0, 24, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
// contains original set of texcoords
{0, 32, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1},
D3DDECL_END()
};
// Create a gutter helper with the new parameterization
hr = D3DXCreateTextureGutterHelper(width, height, pMesh, 1, &pGutterHelper);
// Resample the texture
hr = pGutterHelper->ResampleTex(pOriginalTex, pMesh, D3DDECLUSAGE_TEXCOORD,
1, pResampledTex);
// Release the gutter helper interface when done with it
Одним из распространенных сценариев может быть использование UVAtlas для создания атласа текстуры, а затем использование ResampleTex для повторной выборки текстуры в новую параметризацию. Дополнительные сведения об атласах см. в статье Использование UVAtlas (Direct3D 9).
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел