Ich hatte schon ein zwei Mal einen Grafik-Rewrite vorgeschlagen. Dabei ist das Rendern der Map gar nicht das Problem, sondern das viele Umschalten zwischen den Textures, die nacheinander gezeichnet werden. Ich selbst hab einen Laptop mit Intel GMA "Grafikkarte" und bekomme erst Probleme, wenn im fortgeschrittenen Spiel viele Häuser und Leute gezeichnet werden. Mit 15fps macht das Spielen da keinen Spaß mehr; eine unbebaute Karte kann ich aber auch mit 1920x1280 Pixeln anschauen. Zumal das Spiel auf Rechnern von vor 10 (!) Jahren flüssig lief!
Mein Vorschlag wäre, die Grafik in reinem SDL nochmal neu zu verfassen. Ich kenne mich nicht aus, aber vermute mal, dass das Binden von Textures in OpenGL ist deswegen so aufwändig ist, weil man sie auf Polygone im dreidimensionalen Raum projezieren kann. Dann muss letzterer noch gerendert werden. Das ist natürlich für alle 2D völliger Overkill, wir brauchen ja nicht einmal irgendwas vergrößern/verkleinern, sondern nur 1:1 die Pixel zeichnen.
Natürlich müsste dann jemand für die Landschaft einen Software-Renderer schreiben. Davon hab ich zwar auch keine Ahnung, aber ich kann als Physik-Student mit Vektoren rechnen und könnte mich einlesen, falls sonst keiner Lust hat ;) .
SDL kann nur noch blitten, aber mehr brauchen wir ja nicht. Außerdem unterstützt es nativ offscreen-Surfaces, auch hardwarebeschleunigt. Man könnte also unabhängig von der Grafikkarte mehrere Layer haben für mehr oder weniger statischen Inhalt.
Ein anderer Punkt ist, im GUI möglichst nur noch zu zeichnen, was sich verändert. Habt ihr schon mal die FPS beobachtet, wenn man im Spiel ein paar Fenster öffnet? Mit OpenGL kann man ohne Framebuffer-Extension Statisches nirgendwo zwischenspeichern. Mit SDL könnte man z.B. für jedes Fenster ein Hardware-Surface erstellen, in das nach dem ersten Zeichnen nur noch die Änderungen kommen. Das lässt sich dann ohne CPU und mit Warteschlange (SDL_ASYNCBLIT) auf den Bildschirm bringen, während man weiterrechnet.
Falls jemand der Meinung ist, SDL sei zu langsam, dann frage ich mich warum OpenTTD bei mir flüssig läuft.
Eine native-SDL-Grafik ließe sich zunächst auch parallel zur OpenGL-Grafik entwickeln, ohne off-display-Surface/Framebuffer - Unterstützung. Ich selbst hätte Spaß daran.
Falls ich Unsinn geschrieben habe, widerlegt mich bitte :) . Mein Wissen ist auch nur mit Google zusammengesucht.
Gruß,
Divan