Загружает 3D объект из .х файла в DirectXR.
HRESULT D3DXLoadMeshFromX(
LPSTR pFilename,
DWORD Options,
LPDIRECT3DDEVICE8 pDevice,
LPD3DXBUFFER* ppAdjacency,
LPD3DXBUFFER* ppMaterials,
PDWORD pNumMaterials,
LPD3DXMESH* ppMesh
);
Описание параметров
pFilename - указатель на строку, в котрой содержится имя DirectX файла, чтобы загрузить.
Options - комбинируя один или более флажков, Вы тем самым определяете как создать 3D объект. Имеются следующие флажки:
- D3DXMESH_32BIT - 3D объект содержит 32-битовые индексы вместо 16-битовых. 32 битовый 3D объект может содержать в себе 2^32-1 граней и вершин. Этот флажок не поддерживается и Вы его не должны использовать.
- D3DXMESH_DONOTCLIP - используйте совместно с флажком D3DUSAGE_DONOTCLIP для вершин и индексации буферов.
- D3DXMESH_DYNAMIC - тоже самое что и флажки D3DXMESH_VB_DYNAMIC и D3DXMESH_IB_DYNAMIC.
- D3DXMESH_RTPATCHES - используйте совместно с флажком D3DUSAGE_RTPATCHES для вершин и индексации буферов.
- D3DXMESH_NPATCHES - определяя этот флажок, Вы тем самым заставляете вершины и индексацию буферов быть созданным при помощи флажка D3DUSAGE_NPATCHES. Этот требуется, если объект должен быть отображен используя N-Patch в Direct3D.
- D3DXMESH_MANAGED - тоже самое что и флажки D3DXMESH_VB_MANAGED и D3DXMESH_IB_MANAGED.
- D3DXMESH_POINTS - используйте совместно с флажком D3DUSAGE_POINTS для вершин и индексации буферов.
- D3DXMESH_IB_DYNAMIC - используйте совместно с флажком D3DUSAGE_DYNAMIC для индексации буферов.
- D3DXMESH_IB_MANAGED - используйте совместно с классом памяти D3DPOOL_MANAGED для индексации буферов.
- D3DXMESH_IB_SYSTEMMEM - используйте совместно с классом памяти D3DPOOL_SYSTEMMEM для индексации буферов.
- D3DXMESH_IB_WRITEONLY - используйте совместно с флажком D3DUSAGE_WRITEONLY для индексации буферов.
- D3DXMESH_SYSTEMMEM - тоже самое что и флажки D3DXMESH_VB_SYSTEMMEM и D3DXMESH_IB_SYSTEMMEM.
- D3DXMESH_VB_DYNAMIC - используйте совместно с флажком D3DUSAGE_DYNAMIC для буфера вершин.
- D3DXMESH_VB_MANAGED - используйте совместно с классом памяти D3DPOOL_MANAGED для буфера вершин.
- D3DXMESH_VB_SYSTEMMEM - используйте совместно с классом памяти D3DPOOL_SYSTEMMEM для буфера вершин.
- D3DXMESH_VB_WRITEONLY - используйте совместно с флажком D3DUSAGE_WRITEONLY для буфера вершин.
- D3DXMESH_WRITEONLY - тоже самое что и флажки D3DXMESH_VB_WRITEONLY и D3DXMESH_IB_WRITEONLY.
pDevice - указатель на интерфейс IDirect3DDevice8, чтобы присоединить данный объект к устройству.
ppAdjacency - адрес указателя на интерфейс ID3DXBuffer. Когда эта функция возвращает, этот параметр содержит массив состоящий из трех граней DWORDs, определяющие соседние грани.
ppMaterials - адрес указателя на интерфейс ID3DXBuffer. Когда эта функция возвращает, этот параметр содержит массив на структуру D3DXMATERIAL, которая содержит информацию записанного DirectX файла.
pNumMaterials - указатель на структуру D3DXMATERIAL массива ppMaterials, когда эта функция возвращает.
ppMesh - адрес указателя на интерфейс ID3DXMesh, который позволяет загрузить 3D объект.
Возвращаемое значение
Если функция завершена успешно, тогда возвращается значение D3D_OK.
Если нет, то один из следующих флажков:
Обратите внимание, что если в файле несколько 3D объектов, то они будут представлять как один 3D объект. Если файл содержал иерархию 3D объекта, то все преобразования будут применяться как к единому объекту.
Требования
Заголовки: объявить D3dx8mesh.h.
Подключить библиотеку: Используйте D3dx8.lib.
Примеры
См. раздел Direct3D: "Шаг 19 - Создание, загрузка и отображение X-файла".