Ahoj, snažím se naprogramovat jednoduchou hru v C++ za použití knihovny SDL. Momentálně hra umí načíst mapu, přehrávat hudbu a pohybovat s panáčkem.
Vše funguje (alespoň co se po vizuální stránce zdá) dobře. Postavička se pohybuje, hudba se neseká a mapa se načítá jak má. Kdyby ale všechno fungovalo tak perfektně, asi bych nepsal ;).
Jen tak ze zvědavosti jsem si vedle spuštěné hry zapnul i top (program na sledování využití CPU a paměti). Využití CPU se drží na 23%. To mi přijde dost (na to, jak hra vypadá a poměr proti ostatním aplikacím, které nevyužívají ani 2-3%). Někde jsem četl, že vykreslování se samotným SDL je pomalé, takže jsem CPU nevěnoval až takovou váhu. Horší to ale bylo s pamětí. Využití začíná někde na 1-2%, ale postupně roste. Schválně jsem chvíli počkal a po 2 minutách jsem byl na 80%.
Několik záseků jsem už odstranil (třeba generování SDL_Surface s mapou v každém cyklu, přidal několik SDL_FreeSurface atd..
Valgrind hlásí (převážně) chyby v SDL jako takovém viz. pastebin. Valgrind používám prvně, takže si jeho hlášky možná špatně vykládám.
Kdyby měl někdo zájem nahlédnout do zdrojových kódů: Download Přiloženy jsou i projektové soubory pro Netbeans a všechna potřebná data. Některé parametry jsou napsané natvrdo, jde jen o testovací nastavení.
Je normální, že i takto jednoduchá hra vytěžuje procesor na 20%? Vyřešilo by to spojení s OpenGL? V čem by mohl být schovaný memory leak (alespoň tipy)?