Такой вопрос. Вот функция, загружающая меш.
Public Function CreateGameMesh(FileName As String) As GameMesh
Dim MtrlBuffer As D3DXBuffer
Dim i As Long
Dim strTexName As String
Set CreateGameMesh.Model = g_D3DX.LoadMeshFromX(FileName, D3DXMESH_MANAGED, _
g_D3DDevice, Nothing, MtrlBuffer, CreateGameMesh.NumMaterials)
ReDim CreateGameMesh.MeshMaterials(CreateGameMesh.NumMaterials)
ReDim CreateGameMesh.MeshTextures(CreateGameMesh.NumMaterials)
For i = 0 To CreateGameMesh.NumMaterials - 1
g_D3DX.BufferGetMaterial MtrlBuffer, i, CreateGameMesh.MeshMaterials(i)
CreateGameMesh.MeshMaterials(i).Ambient = CreateGameMesh.MeshMaterials(i).diffuse
strTexName = g_D3DX.BufferGetTextureName(MtrlBuffer, i)
If strTexName <> "" Then
Set CreateGameMesh.MeshTextures(i) = g_D3DX.CreateTextureFromFile(g_D3DDevice, App.Path + "\" + strTexName)
End If
Next
Set MtrlBuffer = Nothing
End Function
Вот вывод меша на экран:
For i = 0 To mDrawing.NumMaterials - 1
g_D3DDevice.SetMaterial mDrawing.MeshMaterials(i)
g_D3DDevice.SetTexture 0, mDrawing.MeshTextures(i)
mDrawing.Model.DrawSubset i
Next
Рисую в Максе меш. Конвертирую в X Пандой. Если накладываю текстуру - всё в порядке, текстура нормально выводится этим кодом. Если только материал (Ambient делаю синим, к примеру, и назначаю этот материал мешу) - меш выводится белым. В то же время DXViewer - утилита из SDK - показывает меш правильно, окрашенный синим цветом. Конечно, можно всё обклеить текстурами и жить без проблем, но - почему так происходит?
В общем, если кто-то понимает, в чём дело, дайте знать.