Fehler beim Laden der Textur



  • Hi

    Ich bin am Programmieren eines X-Mesh. Doch nun wenn ich eine Textur darüber versehe, wird diese nicht angezeigt, warum?

    Hier ist ein Codeausschnitt:

    void CModel::LoadModel(Object *pObject, LPCTSTR File)
    {
    	LPD3DXBUFFER bufMaterial;
    
    	D3DXLoadMeshFromX(File,
    					  D3DXMESH_SYSTEMMEM,
    					  g_pD3D->d3ddev,
    					  NULL,
    					  &bufMaterial,
    					  NULL,
    					  &pObject->numMaterials,
    					  &pObject->Mesh);
    
    	D3DXMATERIAL * tempMaterials = (D3DXMATERIAL*)bufMaterial->GetBufferPointer();
    
    	pObject->Material = new D3DMATERIAL9[pObject->numMaterials];
    	pObject->Texture = new LPDIRECT3DTEXTURE9[pObject->numMaterials];
    
    	for(DWORD index = 0; index < pObject->numMaterials; index++)
        {
            pObject->Material[index] = tempMaterials[index].MatD3D;
            pObject->Material[index].Ambient = pObject->Material[index].Diffuse;
    
            if(FAILED(D3DXCreateTextureFromFile(g_pD3D->d3ddev,
    										    (LPCWSTR)(tempMaterials[index].pTextureFilename),
                                                &pObject->Texture[index])))
    		{
    			MessageBox(NULL, L"Fehler beim Laden der Texture", L"Fehler aufgetreten",
    					   MB_OK);
    
                pObject->Texture[index] = NULL;
    		}
    	}
    }
    
    void CModel::DrawModel(Object * pObject, float x, float y, float z)
    {
    	D3DXMATRIX matTranslate;
    	D3DXMATRIX mRotationY;
    	fAngle += 0.009f;
    	D3DXMatrixRotationY(&mRotationY, fAngle);
        D3DXMatrixTranslation(&matTranslate, x, y, z);
        g_pD3D->d3ddev->SetTransform(D3DTS_WORLD, &mRotationY);
    
    	for(DWORD index = 0; index < pObject->numMaterials; index++)
        {
            g_pD3D->d3ddev->SetMaterial(&pObject->Material[index]);
            if(pObject->Texture[index] != NULL)
                g_pD3D->d3ddev->SetTexture(0, pObject->Texture[index]);
    
            pObject->Mesh->DrawSubset(index);
        }
    }
    

    Kann mir jemand sagen wo der Fehler ist?

    Gruss Patrick



  • das geht nicht:

    pObject->Texture = new LPDIRECT3DTEXTURE9[pObject->numMaterials];
    

    du musst dir über das Device ein Textur Objekt holen


Anmelden zum Antworten