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


Функция D3DXCreateTextureFromFileEx

Создает текстуру из файла. Это более расширенная функция, чем D3DXCreateTextureFromFile.

Синтаксис

HRESULT D3DXCreateTextureFromFileEx(
  _In_    LPDIRECT3DDEVICE9  pDevice,
  _In_    LPCTSTR            pSrcFile,
  _In_    UINT               Width,
  _In_    UINT               Height,
  _In_    UINT               MipLevels,
  _In_    DWORD              Usage,
  _In_    D3DFORMAT          Format,
  _In_    D3DPOOL            Pool,
  _In_    DWORD              Filter,
  _In_    DWORD              MipFilter,
  _In_    D3DCOLOR           ColorKey,
  _Inout_ D3DXIMAGE_INFO     *pSrcInfo,
  _Out_   PALETTEENTRY       *pPalette,
  _Out_   LPDIRECT3DTEXTURE9 *ppTexture
);

Параметры

pDevice [in]

Тип: LPDIRECT3DDEVICE9

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

pSrcFile [in]

Тип: LPCTSTR

Указатель на строку, указывающую имя файла. Если для параметров компилятора требуется Юникод, тип данных LPCTSTR разрешается в LPCWSTR. В противном случае строковый тип данных разрешается в LPCSTR. См. заметки.

Ширина [in]

Тип: UINT

Ширина в пикселях. Если это значение равно нулю или D3DX_DEFAULT, измерения берутся из файла и округляются до двух значений. Если устройство поддерживает 2 текстуры без питания и указано D3DX_DEFAULT_NONPOW2 , размер не будет округлен.

Высота [in]

Тип: UINT

Высота в пикселях. Если это значение равно нулю или D3DX_DEFAULT, измерения берутся из файла и округляются до двух значений. Если устройство поддерживает 2 текстуры без питания и D3DX_DEFAULT_NONPOW2 отделяется, размер не будет округлен.

MipLevels [in]

Тип: UINT

Количество запрошенных уровней MIP. Если это значение равно нулю или D3DX_DEFAULT, создается полная цепочка MIP-карты. Если D3DX_FROM_FILE, размер будет приниматься точно так же, как в файле, и вызов завершится ошибкой, если это нарушает возможности устройства.

Использование [in]

Тип: DWORD

0, D3DUSAGE_RENDERTARGET или D3DUSAGE_DYNAMIC. Присвоение этому флагу значения D3DUSAGE_RENDERTARGET означает, что поверхность будет использоваться в качестве целевого объекта отрисовки. Затем ресурс можно передать в параметр pNewRenderTarget метода SetRenderTarget . Если указано D3DUSAGE_RENDERTARGET или D3DUSAGE_DYNAMIC, необходимо задать для пула значение D3DPOOL_DEFAULT, а приложение должно проверка, что устройство поддерживает эту операцию, вызвав Метод CheckDeviceFormat. D3DUSAGE_DYNAMIC указывает, что поверхность должна обрабатываться динамически. См . раздел Использование динамических текстур.

Формат [in]

Тип: D3DFORMAT

Член перечисленного типа D3DFORMAT , описывающий запрошенный формат пикселей для текстуры. Возвращаемая текстура может иметь формат, отличный от формата, заданного параметром Format. Приложения должны проверка формат возвращаемой текстуры. Если D3DFMT_UNKNOWN, формат берется из файла. Если D3DFMT_FROM_FILE, формат принимается точно так же, как в файле, и вызов завершится ошибкой, если это нарушает возможности устройства.

Пул [вход]

Тип: D3DPOOL

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

Фильтр [вход]

Тип: DWORD

Сочетание одной или нескольких констант D3DX_FILTER , управляющих фильтрацией изображения. Указание D3DX_DEFAULT для этого параметра эквивалентно указанию D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER.

MipFilter [in]

Тип: DWORD

Сочетание одной или нескольких констант D3DX_FILTER , управляющих фильтрацией изображения. Указание D3DX_DEFAULT для этого параметра эквивалентно указанию D3DX_FILTER_BOX. Кроме того, используйте биты 27–31, чтобы указать количество пропущенных уровней MIP (из верхней части цепочки MIP-карты) при загрузке текстуры .dds в память; это позволяет пропустить до 32 уровней.

ColorKey [in]

Тип: D3DCOLOR

Значение D3DCOLOR для замены на прозрачный черный или 0, чтобы отключить ключ цвета. Это всегда 32-разрядный цвет ARGB, независимо от формата исходного изображения. Альфа-канал имеет важное значение и обычно должен иметь значение FF для непрозрачных цветовых клавиш. Таким образом, для непрозрачного черного цвета значение будет равно 0xFF000000.

pSrcInfo [вход, выход]

Тип: D3DXIMAGE_INFO*

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

pPalette [out]

Тип: PALETTEENTRY*

Указатель на структуру PALETTEENTRY , представляющую 256-цветовую палитру для заполнения или значение NULL.

ppTexture [out]

Тип: LPDIRECT3DTEXTURE9*

Адрес указателя на интерфейс IDirect3DTexture9 , представляющий созданный объект текстуры.

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

Тип: HRESULT

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

Комментарии

Параметр компилятора также определяет версию функции. Если определен Юникод, вызов функции разрешается в D3DXCreateTextureFromFileExW. В противном случае вызов функции разрешается в D3DXCreateTextureFromFileExA, так как используются строки ANSI.

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

Эта функция поддерживает следующие форматы файлов: .bmp, DDS, DIB, HDR, .jpg, PFM, .png, PPM и TGA. См . D3DXIMAGE_FILEFORMAT.

Текстуры Mipmapped автоматически заполняют каждый уровень загруженной текстурой. При загрузке изображений в текстуры mipmapped некоторые устройства не могут перейти к изображению 1x1, и эта функция завершится сбоем. В этом случае образы необходимо загрузить вручную.

Для оптимальной производительности при использовании D3DXCreateTextureFromFileEx:

  1. Масштабирование изображений и преобразование формата во время загрузки может быть медленным. Храните изображения в том формате и разрешении, которые они будут использовать. Если для целевого оборудования требуется мощность двух измерений, создайте и сохраните изображения, используя мощность двух измерений.
  2. Для создания изображения MIP-карты во время загрузки выполните фильтрацию с помощью D3DX_FILTER_BOX. Фильтр box выполняется гораздо быстрее, чем другие типы фильтров, такие как D3DX_FILTER_TRIANGLE.
  3. Рассмотрите возможность использования файлов DDS. Так как DDS-файлы можно использовать для представления любого формата текстуры Direct3D 9, их очень легко читать для D3DX. Кроме того, они могут хранить MIP-карты, поэтому для создания изображений можно использовать любые алгоритмы создания MIP-карт.

При пропуске уровней MIP-карты при загрузке DDS-файла используйте макрос D3DX_SKIP_DDS_MIP_LEVELS для создания значения MipFilter. Этот макрос принимает количество пропускаемых уровней и тип фильтра и возвращает значение фильтра, которое затем передается в параметр MipFilter.

Требования

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

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

D3DXCreateTextureFromFile

Функции текстур в D3DX 9