Hallo zusammen,
ich sitze im Moment an einem Snake, meinem ersten größeren Projekt. Grafik mache ich mit DirectX 9. Hier ein Screenshot, noch mit einem Platzhalter-Level:
http://i.imagehost.org/0243/SnakeScreenshot.jpg
Mit der Darstellung der Schlange bin ich allerdings nicht wirklich zufrieden. Die Schlange besteht aus einzelnen Punkten, deren Positionen in einem std::vector gespeichert werden und pro Frame aktualisiert und dann gezeichnet werden. Das hat mehrere Nachteile:
- obwohl die "Schlangenpunkt-Grafik" nur aus schwarzen und transparenten Pixeln besteht, sieht man graue Ränder. Keine Ahnung, warum das so ist. Hier der Link, falls jemand die png-Datei prüfen möchte:
http://f.imagehost.org/0382/SnakePointPng.png
- Die Position des nächsten Schlangenpunktes wird durch Position += Bewegungsvektor*ZeitSeitLetzterAktualisierung errechnet. Wenn aber durch irgendeinen Hintergrundtask mein Netbook-Prozessor kurz beschäftigt ist und die Zeit seit der letzten Aktualisierung deshalb größer wird, bemerkt man sofort einen Sprung in der Schlange.
- je länger die Schlange wird, desto mehr Punkte müssen in jedem Durchgang gerendert werden, was zumindest auf meinem System zu spüren ist.
Mir ist bis jetzt einfach keine bessere Möglichkeit eingefallen bzw. bei google über den Weg gelaufen. Der Ansatz hier
http://spieleprogrammierer.de/phpBB2/vie…php?p=2109#2109 bringt imho auch keine Verbesserung, da ich immer noch eine große Menge an Punkten anzeigen und den ersten Punkt oft aktualisieren müsste.
Auch die Schlange aus größeren Teilen zusammenzusetzen geht imho nicht, weil dann die Kurven nicht mehr wirklich rund aussehen...
Deshalb meine Frage: Hat jemand einen guten Vorschlag für mich, wie ich eine flüssige, runde Bewegung in die Schlange bringen könnte, die möglichst von Hintergrundtasks unabhängig ist? Und die evtl sogar so performant ist, dass mein System damit zurechtkommt (oder kann ich das auf meinem Netbook mit Grafikchip vergessen?)?
Vielen Dank für eure Antworten!
PPretzel