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? 😕



  • http://www.c-plusplus.net/forum/viewtopic.php?t=58579

    Definiere "stirbt das Programm"!

    Bye, TGGC



  • Es stürzt ab, es kommt zu einer Exception. Versuch doch die Datei, die ich hochgeladen habe zu laden. Dann siehst du es auch


Anmelden zum Antworten