textur == speicherfresser?
-
Hi!
Kann es sein, dass D3DXCreateTextureFromFile unglaublich viel speicher verschlingt? Wenn ich die funktion auf ein 106kB JPG für ne einfache kugel aufrufe verputzt das ding sage und schreibe 3MB Ram. Was dann bei mir (30 texturen) 90 MB sind und das nur um 30 kugel butn zu färben o_O
Dann kommen noch ein paar andere Modelle dazu und Prog braucht so mal eben 150MB nur für texturen... Mach ich das was falsch oder gehört sich das so O_o ?? Es werden noch einige neue Texturen dazukommen, und ich möchte nicht als min. anforderung für das programm 1GB Ram angeben müssen..Ich lade die texturen über:
D3DXCreateTextureFromFile( m_pDXWin->GetDevice(), strTextureFileName, &m_pMeshTextures[i] ) );
Gibt es da was bessers?
Beim rendern die Dinger nachladen ist auch nicht so das wahre, da 25 der 30 texturen sowieso immer beötigt werden, dann kann ich sie auch gleich im speicher halten wegen der 5...
-
Naja intern, also im Speicher, liegt deine jpg Textur wahrscheinlich sowieso wieder in einer Art Bitmap-Format vor. Als ein simples Array mit RGBRGBRGBRGB usw...
Das ist der Grund, warum deine vermeintlich kleine jpg Textur so viel deines Speichers frisst. Wandel das jpg mal in ein bmp um und du wirst dich wundern
-
Überdenke folgendes:
Brauchst du wirklich 30 verschiedene Texturen?
Müssen diese wirklich diese hohe Auflösung haben?
Kannst du evtl. Texturkompression nutzen?
-
Ich weiß auch grad nicht wie sieht das aus mit den Mip Maps. Bei der D3DXCreateTextureFromFile Funktion werden doch so viele erstellt wie benötigt werden oder irre ich mich da? Vielleicht kann man da mit der Ex Funktion dann sparen. Weil wenn bei einer 1024x1024 Textur noch eine 512x512 256x256 ... Textur erstellt werden frisst das bestimmt auch net wenig.
-
Ich verstehe sowieso nicht, wie man mit ruhigem Gewissen eine 1024 x 1024 Textur verwenden kann
-
werde mal versuchen die dinger kleiner zu machen..
btw. wo stell ich denn die Texturkompression ein??
-
Das entsprechende Format bei der Texturerstellung angeben. Genaueres steht in der DXSDK Doku.