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


Метод 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).

Требования

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

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

ID3DXTextureGutterHelper

D3DXUVAtlasCreate