Wieso kann man diese DirectX Datei nicht auf die Standartmethode laden!?
-
Hallo!
Ein Kumpel von mir hat ein Haus modelliert und in .X umgewandelt. Mit dem MeshViewer kann ich es auch wunderbar ansehen, nur beim selbst laden stirbt das Programm bei D3DXComputeNormals
Hier könnt ihr euch die Datei ziehen:http://mitglied.lycos.de/Surkevin2/
(ist die prepre.zip)
Mein Code zum laden sieht so aus:
CMesh(LPDIRECT3DDEVICE8 pD3DDevice, LPSTR pFilename, DX_Object dd_obj) { LPD3DXBUFFER pMaterialsBuffer = NULL; LPD3DXMESH pMesh = NULL; m_pD3DDevice = dd_obj.lpD3DDevice; if(FAILED(D3DXLoadMeshFromX(pFilename, D3DXMESH_SYSTEMMEM, m_pD3DDevice, NULL, &pMaterialsBuffer, &m_dwNumMaterials, &pMesh))) { m_pMesh = NULL; m_pMeshMaterials = NULL; m_pMeshTextures = NULL; MessageBox(dd_obj.hwnd, "net gfunna", 0, 0); return; } D3DXMATERIAL* matMaterials = (D3DXMATERIAL*)pMaterialsBuffer->GetBufferPointer(); m_pMeshMaterials = new D3DMATERIAL8[m_dwNumMaterials]; m_pMeshTextures = new LPDIRECT3DTEXTURE8[m_dwNumMaterials]; for(DWORD i = 0; i < m_dwNumMaterials; i++) { m_pMeshMaterials[i] = matMaterials[i].MatD3D; m_pMeshMaterials[i].Ambient = m_pMeshMaterials[i].Diffuse; if(FAILED(D3DXCreateTextureFromFile(m_pD3DDevice, matMaterials[i].pTextureFilename, &m_pMeshTextures[i]))) { m_pMeshTextures[i] = NULL; } } SafeRelease(pMaterialsBuffer); pMesh->CloneMeshFVF(D3DXMESH_MANAGED, D3DFVF_CUSTOMVERTEX, m_pD3DDevice, &m_pMesh); SafeRelease(pMesh); D3DXComputeNormals(m_pMesh, 0); }
Wie gesagt, bei D3DXComputeNormals stirbt das Programm leider
Kevin
-
FUnktionierts denn mit anderen Modeldateien?
-
Mit anderen DirectX Files schon. Gibt es vielleicht eine Begrenzung der Vertizen oder Polygone? Kann ja net angehn...
-
Wenn das Ding schlecht gemodelt wurde, dann kommt da vielleicht ein Poly mit zwei oder gar drei gleichen Koordinaten vor -> und davon kann man logischerweise keine Normalen berechnen.
Aber von einer D3DX-Funktion hätte ich erwartet, dass sie den Fehler abfängt.
-
Heisst das dann ich soll alle Polys überprüfen ob sie 2 oder 3 gleiche Koordinaten haben?
-
-
Es stürzt ab, es kommt zu einer Exception. Versuch doch die Datei, die ich hochgeladen habe zu laden. Dann siehst du es auch