Ładujesz teksture przy każdym wywołaniu draw. Nic dziwnego, że masz zaledwie 2FPS. Ładowanie tekstury to bardzo kosztowana operacja. Nie przyszło ci do głowy, że to chyba nie tak ? :P Tekstura powinna być w całym programie załadować raz. Nie pozwól, żebyś miał kilka razy załadowaną jedną teksture, albo jedną teksture ładować wiele razy (i to jeszcze z taką częstotliwością :O). Obecnie przy każdym renderowaniu twojego sprite-a program musi załadować kilkadziesiąt KB danych (bo pewnie tyle ~ waży twoja tekstura) i po chwili je zwolnić (tekstura jest u ciebie obiektem lokalnym).
Obiekt Sprite powinien natomiast być memberem twojej klasy Postac (chociaż to już nie ma aż tak ogromnego znaczenia).