Frage

Ich programmiere einen Antrag auf 32-Bit-Prozessor mit begrenztem Speicher (512k Flash, 32K RAM).

Das Anzeige auf diesem Gerät ist 128x160 mit 16-Bit-Farbe, die normalerweise 40k rAM verbrauchen würde, wenn ich es auf meinem Prozessor zu puffern war. Ich habe nicht so viel RAM haben, so dass ich bin auf der Suche nach Techniken, Tipps, Tricks, Ideen für on the fly Bildschirmdaten zu erzeugen.

Dinge, die helfen können:

  • Sie wissen vielleicht eine Ressource für diese Art von Einschränkung
  • Vielleicht haben Sie attraktive Grafiken on the fly
  • erzeugt
  • Gibt es einen generischen Algorithmus I Elemente im Programmspeicher verwenden könnte (einschließlich Alpha-Blending) kombinieren on the fly, während ich die Anzeige scannen
  • Einfache Vektor-Rendering-Techniken (oder frei (bsd / mit / Apache) Quelle)
  • ???

Ich habe einen Multiplikator, aber kein Gleitkomma-Prozessor. Das Display selbst hat eine sehr einfache Steuerung und Speicher für die Anzeige -. Aber liest und schreibt ist teuer, so will ich nicht, dass mein Arbeitsplatz verwenden, wenn ich es vermeiden kann

-Adam

War es hilfreich?

Lösung

In einer Art und Weise, Sie sind in so ziemlich dem gleichen Situation Spiele-Entwickler, wo zum Zeitpunkt des Tandys, Spectrums und früher PCs. So, hier ist meine Empfehlung:

Sie sollten Michael Abrash Schriften über Computergrafik lesen. Sie wurden in einer Zeit geschrieben, in dem ein Gleitkomma-Koprozessor ein optionales Stück Hardware war, und sie beschreiben viele der grundlegenden Techniken (Bresenham Linien, etc.) in den alten (angeblich ‚schlecht‘) Software-rendered Tagen verwendet .

Sie können die meisten seiner "Black Book" lesen hier .

Additionaly, können Sie wahrscheinlich eine Menge der alten BBS-Dateien, die die meisten Menschen am Tag verwendet zurück Grafik-Programmierung zu lernen hier . Suchen Sie einfach nach Grafiken, Linien, und was nicht.

Ich hoffe, das hilft!

Update: Ich erinnere mich auch this in meinen ersten Versuchen, die Dinge auf dem Bildschirm zeichnen. Kann nicht sagen, wie viel Zeit ich damit verbracht, die Mathematik dahinter zu verstehen (na ja, um ehrlich zu sein ich wie 15 war zu der Zeit). Sehr gut (und einfach) Einführung in 3D und ein sehr schönes premier auf Transformationen, Polygon-Füllstoffe und Interpolation.

Andere Tipps

Welche Daten zeigen Sie auf dem Bildschirm?

Wenn es nicht fotografische Bilder, könnten Sie mit einer Palette in Betracht ziehen. Zum Beispiel: a. 256 Farbpalette mit 8 Bit pro Pixel würde 20kb erfordern, (plus 256 x 2 Byte für die Lookup-Tabelle), die zumindest besser als 40kb

Ich glaube, die grundlegende Technik mit einer solchen Situation umzugehen ist der Bildschirm in schmale horizontale Streifen zu unterteilen, und nur zwei solcher Streifen im RAM-Puffer. Ein Streifen wird angezeigt, während Sie die nächste nach unten machen. Wenn das Abtasten ‚Strahl‘, um den nächsten Streifen trifft (und feuert einen Interrupt für Sie zu fangen), tauschen Sie die beiden und starten Sie die nächsten Streifen zu ziehen.

Ein unangenehmer Nebeneffekt davon, dass ist, dass Sie hart Timing-Grenzen, wie lange können Sie auf Rendern von jedem Streifen verbringen. Also ich denke, es verlockend wäre, mit etwas langweilig, aber mit vorhersagbarer Leistung zu halten, wie Sprites.

Ein wenig offtopic, aber das ist, wie die Nintendo DS 3D-Hardware funktioniert. Sie können es sehen, wenn Sie um die gleiche Y-Koordinate zu viele Polygone zu machen versuchen -. Polys werden zufällig als Bildschirm-Refresh flackern und fallen aus ereilt die Rendering-Hardware

Auch ich würde zweiten der anderen Plakat Vorschlag, die Sie palettiert Rendering verwenden. Es ist sehr schwer, schnell Mathematik auf 16-Bit-Pixel zu tun, aber schneller in 8bit wenn Sie klug darüber, wie Sie Ihre Palette legen.

Einige Ideen, die schöne Grafik und wenig Speicher kombinieren würde:

  • Shop Hintergründe und Sprites in Flash.
  • Geschäft dynamisch generierte Grafiken in RAM eine Palette auf der Hälfte des Bytes verwendet wird.
  • Verwenden Sie die Windowing-Funktion der LCD-Treiber, nur den Teil des Bildschirms aktualisieren Sie benötigen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top