Demon64 Posted October 27, 2009 Report Share Posted October 27, 2009 Witam! Mam problem ze wczytywaniem tekstur potrzebnych do wyrenderowania sceny. Otóż chcę by tekstury ładowały się z listy OmegaImageList, tak by nie były dostępne dla zwykłych śmiertelników w postaci zwykłych plików graficznych znajdujących się w katalogu z programem Coś już nabazgrałem, ale przy ładowaniu tekstur wywala mi błędy i nie ładuje nic. Oto fragment kodu: var g_pMeshTextures : array of IDirect3DTexture8 = NIL; // tablica tekstur ... // kod ładowania tekstur try D3DXCreateTexture(OmegaScreen1.Device, tex.ImageList.Find(_d3dxMaterials^.pTextureFilename).ImageWidth, tex.ImageList.Find(_d3dxMaterials^.pTextureFilename).ImageHeight, 0,0,D3DFMT_R8G8B8,D3DPOOL_DEFAULT, g_pMeshTextures[_i]); except on exception do ShowMessage('D3DXCreateTexture Error: '+_d3dxMaterials^.pTextureFilename); end; try g_pMeshTextures[_i]:=tex.ImageList.Find(_d3dxMaterials^.pTextureFilename).Image; except on exception do ShowMessage('g_pMeshTextures Error: '+_d3dxMaterials^.pTextureFilename); end; tex - to OmegaImageList, do niego załadowane są tekstury, które chcę używać do renderowania sceny Powyższy kod działa w pętli, która ładuje kolejne tekstury do tablicy g_pMeshTextures. Tablica g_pMeshTextures jest zmienną globalną, na samym początku ustalany jest odpowiedni jej rozmiar. Czy ktoś wie jak to przerobić by można było wczytać tekstury z tego OmegaImageList? Link to comment Share on other sites More sharing options...
Blind Posted October 27, 2009 Report Share Posted October 27, 2009 przeciez omegaImageList zawiera juz IDirect3DTexture8, wiec nie rozumiem co chcesz osiagnac. www.blinder.pl - Blog Link to comment Share on other sites More sharing options...
Demon64 Posted October 28, 2009 Author Report Share Posted October 28, 2009 przeciez omegaImageList zawiera juz IDirect3DTexture8, wiec nie rozumiem co chcesz osiagnac. Wiem, że obiekt OmegaImageList przechowuje IDirect3DTexture8: tex.ImageList.Find('nazwa pliku').Image; ale chodzi o to, że gdy próbuje go wykorzystać, to wywala mi błąd. Rysowanie obiektów 3d odbywa się u mnie tak: var g_pMesh : ID3DXMesh = NIL; // zmienna globalna ... for _i := 0 to g_dwNumMaterials - 1 do begin SetMaterial(g_pMeshMaterials[_i]); SetTexture(0, g_pMeshTextures[_i]); // w tym miejscu nakładana jest tekstura g_pMesh.DrawSubset(_i); end; Próbowałem też zrobić zamiast g_pMeshTextures[_i] dać Image z OmegaImageList: CODE tex.ImageList.Find(textury[_i]).Image // textury[] - tablica przechowująca nazwy tekstur ale dalej to samo... Nie ma natomiast problemu, gdy wczytuję tekstury do g_pMeshTextures[_i] za pomocą instrukcji D3DXCreateTextureFromFile() i to działa, wczytuje teksturę i wyświetla normalnie obiekty oteksturowane bez błędów, ale jedynym mankamentem jest to, że wczytuje te tekstury z samodzielnych plików jpg, bmp, itp. // EDIT: Udało mi się już to zrobić Problem okazał się trywialny - OmegaImageList odróżnia wielkość liter w nazwach plików Temat do zamknięcia Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.