Liste anzeigen - Display list

Eine Anzeigeliste (oder Anzeigedatei ) ist eine Reihe von Grafikbefehlen, die ein Ausgabebild definieren. Das Bild wird erstellt ( gerendert ), indem die Befehle ausgeführt werden, um verschiedene Primitive zu kombinieren . Diese Aktivität wird am häufigsten von spezialisierter Anzeige- oder Verarbeitungshardware durchgeführt, die teilweise oder vollständig unabhängig von der CPU des Systems ist, um die CPU von dem Aufwand für die Wartung der Anzeige zu befreien, und kann Ausgabemerkmale oder eine Geschwindigkeit bereitstellen, die die Kapazität der CPU überschreiten.

Bei einem Anzeigegerät ohne Bildpuffer , wie z. B. Vektorgrafik-Displays , wurden die Befehle im Sekundenbruchteil ausgeführt, um die Ausgabe zu erhalten und zu animieren. In modernen Systemen müssen die Befehle nur ausgeführt werden, wenn sie sich geändert haben oder um die Ausgabe aufzufrischen (zB beim Wiederherstellen eines minimierten Fensters).

Eine Anzeigeliste kann sowohl zwei- als auch dreidimensionale Szenen darstellen. Systeme, die eine Anzeigeliste verwenden, um die Szene zu speichern, werden im Gegensatz zu Systemen mit sofortigem Modus als Systeme mit beibehaltenem Modus bezeichnet.

Eines der frühesten populären Systeme mit echter Anzeigeliste war die Atari 8-Bit-Familie . Die Anzeigeliste (eigentlich in der Atari-Terminologie so genannt) ist eine Reihe von Anweisungen für ANTIC , den Video- Coprozessor , der in diesen Maschinen verwendet wird. Dieses Programm, das im Speicher des Computers gespeichert und von ANTIC in Echtzeit ausgeführt wird, kann Leerzeilen, einen von sechs Textmodi und acht Grafikmodi angeben, welche Abschnitte des Bildschirms horizontal oder vertikal fein gescrollt werden können, und Anzeigelistenunterbrechungen auslösen ( auf anderen Systemen als Raster-Interrupts oder HBI bezeichnet).

Die Amstrad PCW-Familie enthält eine Anzeigelistenfunktion namens 'Roller RAM'. Dies ist ein 512-Byte-RAM-Bereich, der aus 256 16-Bit-Vektoren im RAM besteht, einer für jede Zeile der 720 × 256-Pixel-Anzeige. Jeder Vektor identifiziert die Position von 90 Bytes monochromer Pixel, die die 720 Pixelzustände der Zeile enthalten. Die 90 Bytes von 8 Pixelzuständen sind tatsächlich in 8-Byte-Intervallen beabstandet, sodass zwischen jedem Byte der Pixeldaten 7 ungenutzte Bytes liegen. Dies entspricht der Art und Weise, wie das textorientierte PCW einen typischen Bildschirmpuffer im RAM konstruiert, in dem die 8 Zeilen des ersten Zeichens in den ersten 8 Bytes gespeichert werden, die Zeilen des zweiten Zeichens in den nächsten 8 Bytes und so weiter. Der Roller RAM wurde implementiert, um das Scrollen des Displays zu beschleunigen, da es für seinen 3,4 MHz Z80 inakzeptabel langsam gewesen wäre, den 23-KB-Display-Puffer "von Hand", dh in Software, hochzuschieben. Der zu Beginn einer Bildschirmauffrischung verwendete Roller-RAM-Starteintrag wird von einem Z80-beschreibbaren E/A-Register gesteuert. Daher kann der Bildschirm einfach gescrollt werden, indem dieses E/A-Register geändert wird.

Ein weiteres System, das eine Anzeigelisten-ähnliche Funktion in der Hardware verwendet, ist der Amiga , der nicht zufällig auch von einigen der gleichen Leute entworfen wurde, die die Atari 8-Bit- Benutzerdefinierte Hardware entwickelt haben. Die Amiga-Display-Hardware war für die damalige Zeit äußerst ausgereift und würde, sobald sie einmal angewiesen wurde, einen Anzeigemodus zu erzeugen, dies automatisch für jede folgende Scanzeile tun. Der Computer enthielt auch einen dedizierten Co-Prozessor namens " Copper ", der ein einfaches Programm oder "Copper List " ausführte , das dazu gedacht war, Hardware-Register synchron mit der Anzeige zu modifizieren. Die Copper List-Anweisungen könnten den Copper anweisen, zu warten, bis die Anzeige eine bestimmte Position auf dem Bildschirm erreicht, und dann den Inhalt der Hardware-Register zu ändern. Tatsächlich handelte es sich um einen Prozessor, der für die Bedienung von Raster-Interrupts bestimmt war . Der Copper wurde von Workbench verwendet, um mehrere Anzeigemodi (mehrere Auflösungen und Farbpaletten gleichzeitig auf dem Monitor) zu mischen, und von zahlreichen Programmen, um Regenbogen- und Farbverlaufseffekte auf dem Bildschirm zu erzeugen. Der Amiga Copper war auch in der Lage, den Mid-Frame der Sprite-Engine mit nur einer Abtastzeile Verzögerung neu zu konfigurieren. Dies ermöglichte es dem Amiga, mehr als seine 8 Hardware-Sprites zu zeichnen, solange die zusätzlichen Sprites Scanlines (oder die eine Scanline-Lücke) nicht mit mehr als 7 anderen Sprites teilten. dh solange mindestens ein Sprite mit dem Zeichnen fertig war, konnte ein anderes Sprite darunter auf dem Bildschirm hinzugefügt werden. Darüber hinaus ermöglichte der spätere 32-Bit-AGA-Chipsatz das Zeichnen größerer Sprites (mehr Pixel pro Zeile) bei gleichem Multiplexing. Beachten Sie, dass der Amiga auch eine dedizierte Block-Shifter-Hardware ("Blitter") hatte, die größere Objekte in einen Framebuffer ziehen konnte. Dies wurde oft anstelle von oder zusätzlich zu Sprites verwendet.

In primitiveren Systemen können die Ergebnisse einer Anzeigeliste simuliert werden, allerdings auf Kosten von CPU-intensiven Schreibvorgängen in bestimmte Anzeigemodus-, Farbsteuerungs- oder andere visuelle Effektregister im Videogerät anstelle einer Reihe von Renderings Befehle, die vom Gerät ausgeführt werden. Somit muss das angezeigte Bild unter Verwendung eines anderen Rendering-Prozesses erzeugt werden, entweder bevor oder während die CPU-gesteuerte Anzeigeerzeugung ausgeführt wird. In vielen Fällen wird das Bild auch zwischen den Frames modifiziert oder neu gerendert . Das Bild wird dann auf verschiedene Weise angezeigt, abhängig von der genauen Art und Weise, in der der CPU-gesteuerte Anzeigecode implementiert ist.

Beispiele für die Ergebnisse, die auf diesen älteren Computern, die CPU-gesteuertes Video erfordern, möglich sind, sind Effekte wie der FLI- Modus von Commodore 64/128 oder Rainbow Processing auf dem ZX Spectrum.

Missbilligung

Anzeigelisten sind in modernen Grafikarchitekturen weitgehend veraltet, da sie eine Reihe von Befehlen in der Grafikpipeline mit fester Funktion darstellen . Moderne Architekturen verwenden Shader und Vertex-Buffer-Objekte , um die Grafikleistung nicht an die CPU zu binden . Low-Level-Grafik-APIs wie Vulkan und DirectX 12 bieten jedoch anzeigelistenähnliche Funktionen in Form von Befehlspuffern und Befehlslisten.

Verweise

Siehe auch