home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Multimedia 1994 October
/
IMM1094.ISO
/
demo
/
optix
/
optix200
/
opt200.prg
/
GRAFIK.INF
< prev
next >
Wrap
Text File
|
1994-06-29
|
18KB
|
406 lines
Grafische Grundlagen
Die grundlegende Anforderungen an ein Multimedia-System beziehen sich im
wesentlichen auf die Bild- und Tonverarbeitung. Da wir uns in einem DOS-System
befinden und daher prinzipiell nicht über einen linearen, sondern einen
segmentierten Arbeits- und Grafikspeicher verfügen - die unerfreulichen
Nebenwirkungen sind jedem Kenner vertraut - ist die Umsetzung einer
reibungslosen und komfortablen Grafikverwaltung alles andere als eine
Leichtigkeit.
OPTIX ist eines der ersten grafikorientierten Entwicklungssysteme, die in
der SVGA-Auflösung ab 640x480 Punkten bei Verwendung von 256 gleichzeitig
darstellbaren Farben über eine komplett entwickelte Grafikverwaltung incl.
Maussteuerung verfügt und dabei dem Anwender/Programmierer jegliche Arbeit
im Umgang mit den Segmentseiten der VGA abnimmt. Ein Großteil der Operationen
erfolgt intern - für den OPTIX-Anwender unsichtbar- über ein raffiniertes
Transfersystem zwischen DOS-RAM, EMS und VGA mit jeweils unterschiedlich zu
handhabenden Speicherstrukturen, sodaß - ohne daß Sie sich darum zu kümmern
hätten - der äußere Eindruck einer auf Ganzseiten beruhenden, linearen
Grafikorganisation entsteht.
Daß 'ganz nebenbei' auch noch über das XMS-RAM eine völlig reibungslose
Synchronvertonung im Multitasking per DMA (Insider wissen, was gemeint ist)
vonstatten geht, die sich auch durch Grafik- und Festspeicherzugriffe nicht
beirren läßt, ist doch eigentlich selbstverständlich - oder??
Grafik-Organisation
In OPTIX werden drei wesentliche Grafikbereiche unterschieden.
o der Hintergrundspeicher
o der VGA-Bildschirmspeicher
o der WIN-Puffer
Aus dem raffinierten Transfer zwischen diesen drei Bereichen ergibt sich bei
näherem Hinsehen eine unüberschaubare Fülle an Grafikeffekten, deren
Anwendungsbereiche und Wirkungsweisen erst nach einiger Übung mit OPTIX
andeutungsweise erkennbar werden.
Der Hintergrundspeicher
Der Hintergrundspeicher hat die Aufgabe, Vollbilder, die durch READPIC geladen
und von OPTIX als solche erkannt wurden, aufzunehmen, ehe diese z.B. durch
LOADPIC oder RESTOREBOX - ggfls. nach vorbereitenden Palettenaktionen - in den
(sichtbaren) Bildschirmspeicher der VGA kopiert werden. Die Befehle LAODPIC,
RESTOREBOX und RESTORLINE korrespondieren dabei immer mit dem aktuell aktiven
Bildschirmspeicherbereich der VGA (s.ACTIVEPAGE). Der Inhalt des Hintergrund-
speichers bleibt bei diesen Prozessen unverändert.
Dem Hintergrundspeicher bzw. dem WIN-Puffer ist ein Palettenpuffer zugeordnet,
der - ähnlich dem Hintergrundspeicher - die mit dem Bild geladene Farbpalette
aufzunehmen hat. Auch diese Farbpalette kann - bevor das Bild installiert wird
- ggfls. durch GETPALoder SETGAMMA vorbereitet werden, ehe sie durch SETALLPAL,
SETSUBPAL, FADEIN (Sonderfall: LOADPIC(0,0); s. dort), in den Digital-Analog-
Converter der VGA ('DAC': die 'Vordergrundpalette') kopiert wird.
Wurde im Vordergrund-Bildschirmspeicher ein Bild bzw. im DAC seine Palette
verändert, kann durch SCRTOBUF diese Änderung wieder in den Hintergrundspeicher
zurückkopiert und ggfls. durch SAVEBUF als BMP-Bitmap auf dem Festspeicher
gesichert werden. Diese Bitmap kann anschließend durch jedes gängige
Grafikprogramm geladen und weiterverarbeitet werden.
Der VGA-Bildschirmspeicher
Jede VGA (VideoGraphicAdapter) verfügt über einen eigenen Grafikspeicher, der
die Aufgabe hat, Bilder, die auf dem Monitor sichtbar werden sollen,
aufzunehmen. Seit Einführung des Super-VGA-Modus in 256 Farben (SVGA ab 640x480
in 256 Farben) verfügen die Grafik-Adapter über eine Speichergröße von mind.
512 Kilobyte, da der nötige Speicherbedarf einer solchen Auflösung mit 640x480=
307.200 Byte die Kapazität der älteren 256 KB-VGA∩s überschreitet. Je nach Typ
und Hersteller und Ausstattung kann diese Größe jedoch auch auf 1024 KB (für
1024x768 in 256 Farben) oder noch mehr erweitert sein (z.B. 4096 KB für bis zu
1280x960 in 24Bit-Farbauflösung=TRUECOLOR = 1280x960x3 = 3.686.400 Byte).
Im Fall, daß ein größeres VGA-RAM als 512 KB vorhanden ist, ist OPTIX in der
Lage, zwei separate Bildschirmseiten zu verwalten, die dann - sofern die VGA
bzw. der entsprechende VESA-SVGA-Treiber es zulassen - auch unsichtbar
beschrieben und gelesen werden können.
Diese Double-Buffer-Technik ermöglicht eine Fülle von Arbeitsweisen, die eine
sehr professionell wirkende Bildschirmdarstellung erst ermöglichen. So ist
gerade bei bewegten Bildteilen mit einer 512KB-VGA ein gewisser 'Flimmer-
Effekt' nicht zu vermeiden, da durch den Wechsel zwischen der Darstellung des
Bildteiles und seiner Restauration eine Zeitdifferenz liegt, die vom
menschlichen Auge als unangenehmes Flackern empfunden wird.
Dieser Effekt läßt sich nur dadurch beheben, indem ein Bildaufbau mitsamt der
ggfls. vorher nötigen Bildrestauration vollständig im nicht sichtbaren Speicher
- also auf der 2. Bildschirmseite - durchgeführt wird und erst dann in den
sichtbaren Bereich der VGA eingeblendet wird, wenn das Bild steht. Für diese
unabhängige Umschaltung der jeweils aktiven und der jeweils sichtbaren
Bildschirmseite der VGA sind die Befehle ACTIVEPAGE und VISIBLEPAGE konzipiert.
Verfügt Ihre VGA 'nur' über 512KB Video-RAM, so spielen sich also alle Zugriffe
auf den Bildschirmspeicher im permanent sichtbaren Bereich ab. Sämtliche OPTIX-
Befehle, die auf das Video-RAM zugreifen, beziehen sich ausschließlich auf die
momentan aktive Seite. Bei einer 512KB-VGA ist also jeder LOADWIN-, RESTOREBOX-,
PLOT- oder LINE-Befehl sofort sichtbar, die beiden Seitenumschaltungsbefehle
haben in diesem Fall keine Wirkung. Dagegen ist bei größeren VGA∩s durch die
Umschaltung der jeweils sichtbaren und aktiven Seiten ein regelrechter
'Kreisverkehr' zwischen den verschiedensten Grafikspeichern möglich,ohne das
der Betrachter davon etwas merkt.
Die effektiven Vorteile dieser Technik werden erst für den routinierten
'Animationstechniker' voll erkennbar: in Kombination mit den Befehlen SCRTOBUF,
SAVEBUF, COPYWIN und SAVEWIN wird so eine vollständige Grafikverwaltung
(Fensterverwaltung, Restoretechnik, Rechtecklisten) auch in Zusammenarbeit mit
dem Festspeicher (temporäre Dateien) möglich.
Der WIN-Puffer
Der dritte im Bunde - und auch für die Animationstechnik der wichtigste - ist
der im EMS liegende WIN-Puffer.
Dieser nur OPTIX-intern vorhandene Bildspeicher ist ein wahres Multitalent.
OPTIX erkennt automatisch, ob durch READPIC oder READDBPIC ein Bild geladen
wurde, daß der aktuellen Bildschirmauflösung (640x480) entspricht. Weicht es
von diesem Format ab, wird es ohne Umwege direkt in den WIN-Puffer geschrieben,
von wo es dann mit Befehlen wie LOADWIN, LOADSPRITE, SAVEWIN etc. weiterverar-
beitet werden kann.
Die besondere Raffinesse besteht nun darin, daß der WIN-Puffer auch Bilder
aufnehmen kann, die wesentlich größer sind als die aktuelle Auflösung (bis
zu 1024x768 bzw. je nach EMS-Größe). In Verbindung mit dem LOADSPRITE-Befehl
sind Ihnen animationstechnisch fast keine Grenzen mehr gesetzt. Gerade bei
schnellen Rechnern mit LocalBus und Double-Buffer sind so Effekte denkbar, die
sich kaum noch von den TV-Animationen der teuren Graphic-Workstations unter-
scheiden (spiegeln, verzerren, stretchen, Collagen etc.).
So können auch auf einfachste Art und Weise Trick-Clips produziert werden,
indem in einem beliebigen Grafikprogramm ein Clip mit z.B. 128 Bildern (16x8er
Raster a' 100x80 Pixel = 1600x640) vorbereitet und dann per LOADSPRITE bei
einer Wechselfrequenz von 16 Bildern dargestellt wird, woraus sich ein
Trickfilm von ca. 8 Sekunden Länge ergäbe. Diese Länge entspricht zwar nicht
den Ansprüchen an einen Videoclip (s. READFILM, SHOWFILM), ermöglicht aber für
einen Großteil des Animationsbedarfs eine unkomplizierte und schnelle
Produktionsweise, die mit jedem gängigen Grafikprogramm relativ leicht
bewerkstelligt werden kann, ohne auf eine umständliche Video- oder Trickfilm-
Herstellung (AVI, FLI/FLC) zurückgreifen zu müssen.
Bildformate
Von OPTIX werden folgende Bildformate verarbeitet:
WINDOWS Bitmap (.BMP)
---------------------
Größen: beliebig
Fullsscreens: 320x200 640x480 800x600 1024x768
Farbauflösungen:
1, 4 und 8 Bit entsprechend 2, 16 und 256 Farben. Es werden keine Truecolor
(32 Bit) Bilder gelesen. Wenn eine Palette vorhanden ist, wird sie mit
eingelesen.
Es gibt ein älteres Bitmap-Format mit verkürztem Header und einer 3-Byte
Palette (im Gegensatz zur 4-Byte Palette des Standard BMP-Formates), das aber
nur von wenigen Programmen verarbeitet werden kann. Dieses Format wird von
OPTIX erkannt, aber nicht gelesen. Komprimierte Bitmaps (.RLE) werden von
OPTIX nicht verarbeitet.
Truevision TARGA (.TGA)
-------------------------
Größen: beliebig
Fullsscreens: 320x200 640x480 800x600 1024x768
Farbauflösungen:
8 Bit enstsprechend 256 Farben. (TARGA Typ 1 und 9). Es werden keine Truecolor
(16, 24 und 32 Bit) gelesen. Wenn eine Palette vorhanden ist, wird sie mit
gelesen. Es werden sowohl 768-Byte als auch 1024-Byte Paletten gelesen. Eine
eventuell vorhandene Information-Map wird ignoriert. Der Ursprung des Bildes
(oben oder unten links) wird erkannt und berücksichtigt. Komprimierte Bilder
werden gelesen, der Ursprung muß jedoch links oben sein!
Zsoft-PCX (.PCX)
--------------------
Größen: beliebig
Fullsscreens: 320x200 640x480 800x600 1024x768
Farbauflösungen
8 Bit entsprechend 256 Farben. Es werden nur die Bilder mit folgenden
Eigenschaften verarbeitet:
Versionsbyte: 5
Kompression: Ja
Farbebenen: 1
Bit pro Pixel: 8
Die Palette wird vom Ende der Datei gelesen.
Empfehlenswert ist die Verwendung des TGA-Formates. Unkomprimierte TGA-Bilder
haben bis auf den Header den gleichen Aufbau wie BMP-Bilder. Im Gegensatz zu
BMP läßt sich das TGA-Format jedoch komprimiert abspeichern, was insbesondere
bei Linien- und Flächengrafiken erheblich Speicherplatz sparen kann. Gegenüber
dem PCX-Format ist die Kompression des TGA-Formates etwas besser. Vor allem
erkennt die TGA-Kompression, ob eine Kompression überhaupt sinnvoll ist. Bei
der PCX-Kompression von komplexen Realbildern kann es sein, daß das
komprimierte Format größer als die Quelldatei wird. Aus 308 Kb können nach
der Kompression so z.B. 340 Kb werden.
Viele Grafikprogramme erlauben das Speichern von Bildern im TGA-Format.
Es gibt jedoch einige Grafikprogramme mit dem Fehler, beim Einlesen eines
TGA-Bildes das Bildursprungs-Bit nicht zu berücksichtigen. Ein Bild mit dem
Ursprung links oben würde dann auf dem Kopf stehend dargestellt. Manche
Programme können das komprimierte TGA-Format nicht verarbeiten.
Hi-Color und True-Color Bilder (16, 24 und 32 Bit) werden von OPTIX nicht
verarbeitet, da solche Bilder keine Paletten enthalten und diese während
einer Animation zur reibungslosen Bilddarstellung nicht schnell genug berechnet
werden können.
Dem OPTIX Programmpaket liegen drei Hilfsprogramme bei, mit denen Bilder in
die entsprechende Formate konvertiert werden können.
BMP2TGA konvertiert 4- und 8-Bit BMP in das komprimierte TGA-Format.
COMPRIME komprimiert TGA 8, 16, 24 und 32-Bit Bilder.
EXPAND expandiert TGA 8, 16, 24 und 32-Bit Bilder.
SVGA's
Das größte Problem bei der Programmierung einer grafikverarbeitenden Anwendung
sind die unterschiedlichen Super-VGA's. Nachdem IBM die erste (Standard-)
VGA auf den Markt gebracht hatte, machte sich die Konkurrenz daran, diese zu
verbessern. Der einzige 256-Farben-Modus der Standard-VGA beschränkt sich auf
eine Bildauflösung von 320 Pixeln und 200 Zeilen, da die VGA nur mit 256K
Speicher ausgerüstet wurde.
Nur durch eine Erweiterung des Bildspeichers sind höhere Auflösungen möglich.
Für 640x480 und 800x600 sind mindestens 512Kb und für 1024x786 sind 1024 Kb
(1MByte) Speicher notwendig (jeweils im 256-Farben-Modus). Bei der Entwicklung
von SVGA-Chips, die diese erweiterten Modi beherrschen, hat jedoch jeder
Hersteller sein eigenes Süppchen gekocht, was fast einer babylonischen
Sprachverwirrung gleichkommt.
Während alle VGA's zur Standard-IBM-VGA praktisch 100% kompatibel sind, sind
alle darüber hinausgehenden Super-VGA's praktisch 100% nicht-kompatibel. Das
beginnt beim Index des Video-Modus∩ und hört bei den Codes der zusätzlich zur
Steuerung vorgesehenen Register auf. Zum Beispiel sind zur Umschaltung der VGA
in die 640x480-Darstellung in 256 Farben folgende Codes für den Modus
zuständig:
TSENG : 2Eh
PARADISE : 5Fh
GENOA : 73h
ATI : 62h
OAK : 53h
VIDEO7 : 67h
TRIDENT : 5Dh
CHIPS&TECHNOLOGIES : 79h
etc..
Ähnlich chaotisch verhält es sich mit allen anderen Registerzugriffen, die nun
einmal für eine geschwindigkeitsoptimierte Performance bzw. Grafikpro-
grammierung unerläßlich sind.
Ein später Versuch, die Unterschiede unter einen Hut zu bringen, hatte die
Einführung des VESA-Standards zur Folge. Dieser Standard bietet zwar eine für
alle SVGA's gültige Schnittstelle zu deren Steuerung, ändert aber nichts an
deren völlig unterschiedlicher Hardware. So liegt also zwischen dem Anwendungs-
programmierer und der VGA ein Treiberprogramm, das den Zugriff erheblich
verlangsamt. OPTIX verfügt selbstverständlich auch über einen eigenen VESA-
Treiber, der es ermöglicht, eine OPTIX-Animation auf jeder Grafikkarte zu
starten, die wiederum über einen eigenen VESA-Treiber verfügt. Dieser VESA-
Treiber muß jedoch zuvor - unabhängig von OPTIX - korrekt installiert worden
sein. Die Ablaufgeschwindigkeit von OPTIX wird dadurch zwar geringfügig
gebremst, aber die allgemeine SVGA-Kompatibilität rechtfertigt diese kleine
Einschränkung. Die Tendenz der Grafikboard-Hersteller geht daher auch
erkennbar in eine optimistisch stimmende Richtung. Fast alle modernen
Grafikkarten liefern einen VESA-Treiber mit, der gleich in das Hardware-
BIOS der Karte integriert ist.
Trotzdem der VESA-Standard einige Probleme beseitigen hilft, ist es andererseits
nicht möglich, innerhalb eines so komplexen Programms wie OPTIX die Steuerung
aller auf dem Markt befindlichen SVGAs (sowie aller demnächst erscheinenden..)
zu implementieren. Wir haben uns deshalb entschlossen, einen speziell auf die
Anforderungen von OPTIX zugeschnittenen SVGA-Treiber zu entwickeln. Dieser
Treiber ist an die jeweilige SVGA-Type optimal angepaßt. Dabei liegt es in der
Natur der Sache, daß noch nicht für jede auf dem Markt befindliche SVGA ein
OPTIX-Treiber vorhanden sein kann. Rückfragen und Hinweise (technische Daten
und Register- bzw. Adressbeschreibungen) zu den einzelnen Grafikkarten von
Seiten unserer Kunden sind in dieser Hinsicht ausdrücklich erwünscht. Ob es
dann immer möglich sein wird, einen passenden Treiber zu entwickeln, muß
vorerst dahingestellt bleiben. Ein weitestmögliche VESA- und SVGA-Treiber-
bibliothek für OPTIX würde jedoch gewährleisten, daß fast alle OPTIX-
Animationen auf fast allen SVGA-fähigen DOS-Rechnern weltweit problemlos
betrieben werden könnten.
Hier muß jedoch weiter bedacht werden, daß nicht jede als 'Super-VGA'
bezeichnete Grafikkarte auch den 640x480-Modus in 256 Farben beherrscht(!).
Eine 256-Farben-Darstellung ist nur unter folgenden Auflösungen und Speicher-
größen möglich:
256K 320 x 200 (Standard-VGA)
512K 640 x 480 800 x 600
1 MB 640 x 480 800 x 600 1024 x 768
(640 x 480 und 800 x 600 dann auch in 32768 bzw. 65536 Farben)
Dazu noch ein Hinweis:
Wie gesagt, ist OPTIX grundsätzlich für den Betrieb mit VGAs vorgesehen, die
mindestens die Auflösung von 640 x 480 Punkten in 256 Farben beherrschen, d.h.
die mindestens 512K Speicher haben. Es gibt jedoch - um das CHAOS komplett zu
machen - auch ältere VGA-Chips, die trotz ausreichendem Speicher diese
Auflösung nicht unterstützen!
Für Standard-VGAs gibt es deshalb zusätzlich die Möglichkeit, mit einer
speziellen VGA-OPTIX-Version die Auflösung von 320x200 Punkten in 256 Farben
zu betreiben. Die hierfür vorgesehenen Animationen müssen dann jedoch in
dieser Auflösung produziert worden sein. Es ist nicht möglich, 640x480-
Animationen in der niedrigen Auflösung zu starten. Dagegen wird eine 320x200-
Animation von SVGA-OPTIX anstandslos in einem 320x200-Fenster verarbeitet.
32768 bzw. 65536 Farben werden nur von bestimmten Chips und Herstellern
unterstützt; so beherrscht z.B. die SpeedStar 2.0 mit dem ET4000 nur die
256 Farben-Modi, während die Speedstar 2.4 (auch ET4000) zusätzlich die
32768 Farben-Modi bietet.
Die Page-Swapping Befehle (Double-Buffering: s. ACTIVEPAGE und VISIBLEPAGE)
sind nur auf VGA's verfügbar, die über mindestens ein Megabyte Videospeicher
verfügen. Wird OPTIX über den VESA-Treiber (bei neueren Karten meist im ROM 'on
Board') betrieben, dann wird in den meisten Fällen die VISIBLEPAGE-Umschaltung
ohne Wirkung bleiben.
Unterstützte VGA-Chips:
1. TSENG ET4000
Alle SVGAs mit dem ET 4000 Chip, z.B. von Diamond, Miro Movi, Hercules Dynamit W32i etc.
Video-Speicher 512K - 1MB.
2. TSENG ET3000
Vorgängerversion des ET 4000. Unterstützt nur 512 K Video-Speicher. Page-Swapping (Double-Buffering - s. ACTIVEPAGE - ist daher nicht möglich.
3. CIRRUS LOGIC
Unterstützt werden die Chips:
5424
5426
5428
4. PARADISE
Unterstützt werden die Chips:
PVGA1A ja.
WD90C00 ja.
WD90C11 ja.
WD90C30 ja.
WD90C10 nein. (da nur 256Kb Speicher)
Alte VGAs mit dem PVGA1A und nur 512K Speicher machen teilweise Fehler beim 640 x 480 Modus.
5. OAK
OTI-077
Es gibt noch einen älteren Chip, der nicht unterstützt wird.
6. CHIPS AND TECHNOLOGIES
Von Chips And Technologies gibt es eine ganze Reihe VGA- Chips für verschiedene Anwendungen, u.a. für Laptops. OPTIX-fähig:
82 C 45 ja - falls min. 512KB RAM
82 C 452 ja - falls min. 512KB RAM
82 C 451, 82 C 455, 82 C 456 nein (nur 256K RAM)
82 C 457 nein. (Laptops)
7. TRIDENT
8900 voll unterstützt (incl. VISIBLEPAGE)
9000 abwärtskompatibel zu 8900