Solmis Opublikowano 16 Czerwca 2009 Udostępnij Opublikowano 16 Czerwca 2009 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 16 Czerwca 2009 Udostępnij Opublikowano 16 Czerwca 2009 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... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 16 Czerwca 2009 Udostępnij Opublikowano 16 Czerwca 2009 Jaką ma wartość nMesh? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Solmis Opublikowano 17 Czerwca 2009 Autor Udostępnij Opublikowano 17 Czerwca 2009 @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. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 17 Czerwca 2009 Udostępnij Opublikowano 17 Czerwca 2009 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Solmis Opublikowano 17 Czerwca 2009 Autor Udostępnij Opublikowano 17 Czerwca 2009 @up: To nie to. :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 17 Czerwca 2009 Udostępnij Opublikowano 17 Czerwca 2009 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 17 Czerwca 2009 Udostępnij Opublikowano 17 Czerwca 2009 Jak by typ był nie poprawny to kompilator wyrzucił by błąd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 17 Czerwca 2009 Udostępnij Opublikowano 17 Czerwca 2009 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 18 Czerwca 2009 Udostępnij Opublikowano 18 Czerwca 2009 Jak by typ był nie poprawny to kompilator wyrzucił by błąd.Nie tak od razu ;) Sprawdź kodowanie i spróbuj z rzutowaniem, różnie bywa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę