Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > как использовать D3DXSaveMeshToX


Автор: Nick007 3.6.2010, 15:24
всем доброго времение суток

научите как правильно использовать ф-ю
D3DXSaveMeshToX

кроме как

D3DXSaveMeshToX(..., &pMesh, ..., D3DXF_FILEFORMAT_BINARY);
и

    D3DXSaveMeshToXW(
        LPCWSTR pFilename,
        LPD3DXMESH pMesh,
        CONST DWORD* pAdjacency,
        CONST D3DXMATERIAL* pMaterials,
        CONST D3DXEFFECTINSTANCE* pEffectInstances, 
        DWORD NumMaterials,
        DWORD Format
        );

мне ничего отыскать не удалось

Автор: Nick007 3.6.2010, 18:05
попытался сделать так:
Код

bool ConvernMeshDx(LPCWSTR pFilename_from, LPCWSTR pFilename_to, LPDIRECT3DDEVICE9 g_pD3DDevice)
{
    
        LPCWSTR pFilename;
        DWORD Options;
        //LPDIRECT3DDEVICE9 pD3DDevice;
        LPD3DXBUFFER *ppAdjacency;
        LPD3DXBUFFER *ppMaterials=null; 
        LPD3DXBUFFER *ppEffectInstances;
        DWORD pNumMaterials;
        LPD3DXMESH ppMesh;

    LPCWSTR l_mesh_name=
        ltoladd(L"Core\\meshes\\",(LPWSTR)pFilename_from);

if(FAILED(D3DXLoadMeshFromX(l_mesh_name, D3DXMESH_SYSTEMMEM,
                            g_pD3DDevice, NULL, ppMaterials,NULL,
                            &pNumMaterials, &ppMesh))) {
                                MB(L" Произошла ошибка загрузки D3DXLoadMeshFromX ");
return false;
}
    l_mesh_name=
        ltoladd(L"Core\\meshes\\",(LPWSTR)pFilename_to);
if(FAILED(D3DXSaveMeshToX(l_mesh_name, ppMesh,null,(D3DXMATERIAL*) ppMaterials,null,pNumMaterials,D3DXF_FILEFORMAT_BINARY))) {
    MB(L"// Произошла ошибка сохранения D3DXSaveMeshToX ");
return false;
}//ppMaterials!=null?(D3DXMATERIAL*) ppMaterials:null
    MB(L"ConvernMeshDx отработал");
return true;
}


выдает ошибку:
Произошла ошибка сохранения D3DXSaveMeshToX 

Автор: Ferrisgeneral 7.6.2010, 15:09
может не существует директории для сохранения

Автор: Nick007 16.6.2010, 18:55
Перед мною возникла задача конвертации файла сетки директ иксового формата 
из текстового файла в бинарный.

Привожу пример рабочей функции для перегонки иксового файла из  текстового в бинарный. 
Только что проверил работет на ура, результат получается правильным. 

функция нет сохранения эффектов, 
но, в принципе, такой задачи и не стояло))

Может кому то понадобится...

Добавлено через 1 минуту и 20 секунд
... и собственно пример:

Код

 bool ConvernMeshDx(LPCWSTR pFilename_from, LPCWSTR pFilename_to, LPDIRECT3DDEVICE9 g_pD3DDevice)
{
        ID3DXBuffer *pD3DXMaterials;
        DWORD pNumMaterials;
        LPD3DXMESH ppMesh;


if(FAILED(D3DXLoadMeshFromX(pFilename_from, D3DXMESH_SYSTEMMEM,
                            g_pD3DDevice, NULL, &pD3DXMaterials,NULL,
                            &pNumMaterials, &ppMesh))) {
  //Произошла ошибка загрузки D3DXLoadMeshFromX 
return false;
}

D3DXMATERIAL      *g_pMaterials      = NULL;
g_pMaterials = (D3DXMATERIAL*)pD3DXMaterials->GetBufferPointer();

if(FAILED(D3DXSaveMeshToX(pFilename_to, ppMesh,null,g_pMaterials,null,pNumMaterials,D3DXF_FILEFORMAT_BINARY))) {
    // Произошла ошибка сохранения D3DXSaveMeshToX 
return false;
}
    // Функция отработала успешно 
return true;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)