Loadings RPG-projekt
Vill du reagera på det här meddelandet? Registrera dig för forumet med några klick eller logga in för att fortsätta.

Texture Cache

3 posters

Gå ner

Texture Cache Empty Texture Cache

Inlägg  QauNuckShin ons jul 23, 2008 10:57 am

Jag satt mig och skrev en texture cache för att sätta mig in i C++ objektorientering, containers och pekare.

Ladda ner här: spritecache.zip

Den verkar funka rätt bra. Testapplikationen ritar hela rutan med den valda texturen. Man byter textur med vänster/höger musknapp (upp/ner). Texturcachen är satt att ha en gräns på 10 texturer. När den överskrids tas den texturen som användes sist bort.

12.bmp är skitstor, för att man ska kunna se skillnad i minnet när den är laddad eller inte.

Jag har kört programmet en del, även med förändringen att byta textur mellan varje draw()-anrop, och minnesanvändningen varierar mellan 3.9 och 4.8 MB beroende på om textur 12 är inladdad eller inte. Min slutsats är således att min minneshantering inte har några läckor. Very Happy

Där är ett problem som jag funderar på. Man kan inte spara en SDL_Surface man fått från en sprite och hålla på att rita med den. För det första noterar cachen då inte att man använder ytan, och för det andra finns ju risken att texturen laddas ur minnet om cachen skulle bli full. Så.. vi får helt enkelt låta bli att spara SDL_Surfaces, och helt enkelt hämta dem från cachen hela tiden. Det blir en del overhead med funktionsanropen, men inget katastrofalt tror jag. Det lär vi ju isåfall märka såsmåningom, och då tar vi det problemet då.

Det är dock viktigt att cachen skapas med en bra texturgräns. Säg att vi har en gräns på 3 texturer (absurt lite, men för exemplets skull), och så ritar vi träd, hus, sten, gubbe, hus, träd. Då kommer vi behöva ladda in träd-texturen andra gången där. Så.. Cachen bör ha plats för minst så många texturer som ska visas på skärmen samtidigt någon gång under spelets gång. Skulle något område gå slött att rita kan det vara en bra idé att kolla på texturcachens storlek, alltså.

Så.. Ladda ner zip-filen, kolla koden.. Vad tycks?
(programmet finns färdigkompilerat i Debug-mappen.. Linux-binär.)


Förresten, jag kommer att vara frånvarande en rätt stor del av dagen idag och imorgon. Kanske tittar in lite då och då. Vi får se.
QauNuckShin
QauNuckShin
Kodapa

Antal inlägg : 70
Registreringsdatum : 08-07-21
Ålder : 37
Ort : Lund

Till överst på sidan Gå ner

Texture Cache Empty Sv: Texture Cache

Inlägg  gouki ons jul 23, 2008 8:34 pm

Äre bara jag som använder windows eller? Razz Fick SDL att funka under dev-cpp nu. Tog de eftersom jag hade det installerat redan. Ett problem dock när jag snor din spritecache kod dock...

Building Makefile: "D:\Dev-Cpp\projekt\texturecache\Makefile.win"
Executing make...
make.exe -f "D:\Dev-Cpp\projekt\texturecache\Makefile.win" all
g++.exe main.o texturecache.o texture.o -o "texturecache.exe" -L"D:/Dev-Cpp/lib" -L"D:/Dev-Cpp/lib" -lmingw32 -lSDLmain -lSDL

D:/Dev-Cpp/lib/libSDLmain.a(SDL_win32_main.o)(.text+0x397): In function `console_main':
/Users/hercules/trunk/SDL-1.2/./src/main/win32/SDL_win32_main.c:217: undefined reference to `SDL_main'
collect2: ld returned 1 exit status

make.exe: *** [texturecache.exe] Error 1


Tar upp kampen igen efter cops, simpsons och family guy.
gouki
gouki
Moppepojke

Antal inlägg : 29
Registreringsdatum : 08-07-21
Ålder : 36

Till överst på sidan Gå ner

Texture Cache Empty Sv: Texture Cache

Inlägg  Doomangel ons jul 23, 2008 9:08 pm

-lSDL -lSDLMain

måste du använda som parametrar i linker Surprised
Doomangel
Doomangel
Admin

Antal inlägg : 27
Registreringsdatum : 08-07-20

https://loadingrpgprojekt.swedishforum.net

Till överst på sidan Gå ner

Texture Cache Empty Sv: Texture Cache

Inlägg  gouki ons jul 23, 2008 9:41 pm

Det har jag redan och när jag skriver något eget så funkar det. Fungerade detta programmet för dig direkt?

EDIT: Det var inte värre än att jag bytte int main() mot int main(int args, char *argv[]) så fungerade det
gouki
gouki
Moppepojke

Antal inlägg : 29
Registreringsdatum : 08-07-21
Ålder : 36

Till överst på sidan Gå ner

Texture Cache Empty Sv: Texture Cache

Inlägg  Sponsored content


Sponsored content


Till överst på sidan Gå ner

Till överst på sidan


 
Behörigheter i detta forum:
Du kan inte svara på inlägg i det här forumet