Skocz do zawartości

[DirectX] Problem z funkcją D3DXCreateTextureFromFile


Rekomendowane odpowiedzi

Opublikowano

Witam. Napisałem sobie funkcję ładującą pliki *.x. Wszystko się kompiluje, tylko przy debugowaniu wyskakuje błąd. :confused:

 

Treść błędu:

Unhandled exception at 0x77d4ed87 in GE_3D.exe: 0xC0000005: Access violation reading location 0x000001b0.

 

Call stack:

> GE_3D.exe!InitMeshes() Line 22 + 0x14 bytes C++

 

Funkcja (kod):

HRESULT InitMeshes()
{
        //Tworzenie bufora dla siatki
        LPD3DXBUFFER g_MeshBuffer;

    //Ładowanie siatki modelu
        if(FAILED(D3DXLoadMeshFromX("gfx/beczka.x", D3DXMESH_SYSTEMMEM, g_myDevice, &g_MeshBuffer, NULL, NULL, &nMesh, &meshMesh)))
                return E_FAIL;


        //Tworzenie materiałów i tekstur dla modelu
        //{
        D3DXMATERIAL* dxMaterials = (D3DXMATERIAL*)g_MeshBuffer->GetBufferPointer();
        mMesh = new D3DMATERIAL9[nMesh];
        tMesh = new LPDIRECT3DTEXTURE9[nMesh];

        for(DWORD i = 0; i < nMesh; i += 1)
        {
                mMesh[i] = dxMaterials[i].MatD3D;
                mMesh[i].Ambient = mMesh[i].Diffuse;

                if(FAILED(D3DXCreateTextureFromFile(g_myDevice, dxMaterials[i].pTextureFilename, &tMesh[i])))  //błąd
                        tMesh[i] = NULL;
        }
        //}
        
        //Zwalnianie bufora siatki
        g_MeshBuffer->Release();


        return S_OK;
}

 

Używam Visuala C++ 2008 EE.

Opublikowano

A spróbuj:

        D3DMATERIAL9 mMesh[nMesh];
        LPDIRECT3DTEXTURE9  tMesh[nMesh];

U mnie w silniku działa ładowanie w ten sposób o_O

 

if ( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, ( LPCSTR )path, &g_pTexture[ textures ]) ) )

g_pTexture mam inicjowane jako vector, spróbuj...

Opublikowano

@Crack:

FAIL.

 

@Kofel:

DWORD nMesh = 0L;

 

@topic:

Błąd jest w tym:

dxMaterials[i].pTextureFilename

 

Any ideas? :confused:

 

EDIT: Nazwy tekstur itd. są OK, sprawdzałem. :)

Opublikowano

Program przejezdza się na pamięci, pewnie "i" ma jakąś wartość, ale dxMaterials ma mniejszy zakres, bądź ma wartość null w tym indexie do któego się odwołujesz, taki bazgroł, myślę że zrozumiesz.

Opublikowano

Nie fail tylko chciałem sprawdzić w czym dokładnie jest błąd. Skoro już wiesz w czym jest błąd to nie potrzeba już nic innego. jakiego typu masz dxMaterials.pTextureFilename

Opublikowano

ja od początku stawiałem na błędne kodowanie, sprawdź czy jeśli masz kodowanie ansii w projekcie to czy na pewno nie podajesz stringu unicode ( string=L"tekst"; ) bądź czy funkcja nie pobiera argumentu typu LPCWSTR (unicode). tylko to mi sie nasuwa na myśl widząc ten błąd

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...