home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Multimedia 1995 August
/
IMM0895.ISO01.iso
/
magazin
/
optix
/
disk2
/
optxfpac.set
/
GRAFIK.INF
< prev
next >
Wrap
Text File
|
1995-04-05
|
18KB
|
371 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 reibungs-
losen 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 dar-
stellbaren Farben über eine komplett entwickelte Grafikverwaltung incl.
Maussteuerung unter DOS verfügen und dabei dem Anwender 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 Speicher-strukturen, 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-'FREE' 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
LOADPIC, RESTOREBOX und RESTORLINE korrespondieren dabei immer mit dem
aktuell aktiven Bildschirmspeicherbereich der VGA (s.ACTIVEPAGE). Der Inhalt
des Hintergrundspeichers 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 GETPAL oder 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 Speichermedium
gesichert werden. Diese Bitmap kann anschließend durch jedes gängige Grafik-
programm 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, aufzu-
nehmen. 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-'FREE'
in der Lage, zwei separate Bildschirmseiten zu verwalten, die dann - sofern die
VGA bzw. der entsprechende VESA-SVGA-Treiber (gfls. ab VESA-Version 1.2) es
zulassen - auch unsichtbar beschrieben und gelesen werden können.
Diese Double-Buffer-Technik ermöglicht eine Fülle von Arbeitsweisen, die eine
professionelle Bildschirmdarstellung überhaupt erst 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 Grafik-
verwaltung (Fensterverwaltung, Restoretechnik, Rechtecklisten) auch in
Zusammenarbeit mit dem externen Speichermedium (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 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. weiterverarbeitet
werden kann. Soll ein Bild generell - unabhängig von der aktuellen Bildschirm-
auflösung - in den WIN-Puffer geladen werden, ist statt READPIC der Befehl
READWIN zu verwenden.
Die besondere Raffinesse besteht darin, daß der WIN-Puffer auch Bilder
aufnehmen kann, die wesentlich größer sind als die aktuelle Auflösung. Die
Größe dieses Puffers ist im wesentlichen nur von der Größe des aktuell zur
Verfügung stehenden EMS abhängig. 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
unterscheiden (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. 64 Bildern (8x8er
Raster a' 100x80 Pixel = 800x640) vorbereitet und dann per LOADSPRITE bei
einer Wechselfrequenz von 16 Bildern dargestellt wird, woraus sich ein
Trickfilm von ca. 4 Sekunden Länge ergäbe. Diese Länge entspricht zwar
nicht den Ansprüchen an einen Videoclip (s. READFILM, SHOWFILM, STARTAVI),
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.
Bildformate
--------------------------------
Von OPTIX-'FREE' werden folgende Bildformate verarbeitet:
WINDOWS Bitmap (.BMP)
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. Komprimierte Bitmaps (.RLE , .DIB) werden
von OPTIX-'FREE' verarbeitet.
OS/2 Bitmap (.BMP)
4 und 8 Bit entsprechend 16 und 256 Farben. Es werden keine Hi- und
Truecolor (16/32 Bit) Bilder gelesen - auch dann, wenn die Datei
mehrere Farbauflösungen enthält. Wenn eine Palette vorhanden ist,
wird sie mit eingelesen.
Truevision TARGA (.TGA)
8 Bit entsprechend 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 automatisch erkannt und berücksichtigt.
Komprimierte Bilder werden ebenfalls gelesen, der Ursprung muß
dann jedoch links oben sein.
Zsoft-PCX (.PCX)
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.
CompuServe-GIF (.GIF)
4 oder 8 Bit entsprechend 16 oder 256 Farben im Interlaced- oder
Noninterlaced-Modus.
Empfehlenswert ist die Verwendung des TGA-Formates, da sie sich im kompri-
mierten Format ohne nennenswerten Zeitverlust direkt in den jeweiligen OPTIX-
Grafikspeicher dekomprimieren lassen. 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.
Bei dem hochkomprimierten GIF-Fomat ist zu bedenken, daß die Kompression
zwar sehr effektiv ist (wesentlich höher noch als TGA), jedoch die Komplexität
des Kompressionsverfahrens dazu führt, daß dieses Format aufgrund der Geschwin-
digkeitseinbuße für Direktdarstellung innerhalb einer Animation kaum brauchbar
ist. Dafür ist es gerade dort, wo es auf hohe Kompression ohne Qualitätsverlust
ankommt - z.B. bei der Datenfernübertragung, der Telekommunikation oder für
aufwendige Bilddatenbanken - sehr empfehlenswert.
HiColor und True-Color Bilder (16, 24 und 32 Bit) werden von OPTIX-'FREE' nicht
verarbeitet.
Dem OPTIX-'FREE'-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 z.B. mindestens 512Kb, für 1024x786 schon 1024
Kb (1MByte) und für 1280x1024 sogar ganze 2048 Kb (2 MByte) 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 (=SVGA) 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&TECH. : 79h
etc..
Ähnlich chaotisch verhält es sich mit allen anderen Registerzugriffen, die nun
einmal für eine geschwindigkeitsoptimierte Performance bzw. Grafikprogrammie-
rung 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 dagegen aber
nichts an deren völlig unterschiedlicher Hardware.
OPTIX verfügt deshalb über einen speziellen SVGA-Treiber 'OPTDRVVS.COM', der
es ermöglicht, eine OPTIX-Animation auf jeder Grafikkarte zu starten, die den
VESA-Standard - hard- oder softwaretechnisch - zur Verfügung stellt. Dieser
VESA-Modus muß jedoch vor Aufruf von OPTDRVVS.COM - unabhängig von OPTIX -
bereits korrekt installiert worden sein. Die Ablaufgeschwindigkeit von OPTIX
wird dadurch zwar unmerklich gebremst, aber die allgemeine SVGA-Kompatibilität
rechtfertigt diese winzige Einschränkung. Die Tendenz der Grafikboard-
Hersteller geht daher auch erkennbar in eine optimistisch stimmende Richtung.
Viele der 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,
alternativ zum VESA-Betrieb für geschwindigkeitsabhängige Anwendungen
zusätzlich einen speziell auf die Anforderungen von OPTIX zugeschnittenen
SVGA-Treiber zu entwickeln.
Dieser Treiber 'OPTDRV12.COM' ist speziell an den ET4000-SVGA-Chip (z.B.
Diamond, Miro Movi, Hercules Dynamit, W32 etc.) optimal angepaßt, um besonders
für die Produktion von POI/POS-Terminals sowie von Präsentations- und CBT-
Systemen einen hochoptimierten Garfikbetrieb zu ermöglichen.
Auch im VESA-Modus muß allgemein bedacht werden, daß nicht jede als 'Super-VGA'
bezeichnete Grafikkarte den 640x480-Modus in 256 Farben beherrscht(!). Eine
256-Farben-Darstellung ist nur unter folgenden Auflösungen und Speichergröß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 Farb.)
2 MB : 640 x 480 800 x 600
1024 x 768 1280 x 1024
(640 x 480, 800 x 600 und
1024 x 768 dann auch in
32768 bzw. 65536 Farb.)
Dazu noch ein Hinweis:
Wie gesagt, ist OPTIX'FREE' grundsätzlich für den Betrieb mit VGAs vorgesehen,
welche die Auflösung von 640 x 480 Punkten in 256 Farben beherrschen, d.h. die
mindestens 512K Speicher haben.
Es gibt jedoch - um das < c H a O s > komplett zu machen - auch ältere VGA-
Chips,die trotz ausreichendem Speicher die 640x480-Auflösung nicht unterstützen!
Für Standard-VGAs gibt es deshalb zusätzlich die Möglichkeit, mit einer
speziellen VGA-OPTIX-Treiberversion (OPTDRV02.COM statt OPTDRVVS.COM laden,
dann OPTIX-'FREE' mit dem Parameter /320 starten) 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 im OPTIX-SVGA-Modus anstandslos in einem 320x200-Fenster
verarbeitet. (Wie unser Chef-Entwickler vor einigen Tagen durchsickern ließ,
gibt es neuerdings den noch undokumentierten Befehl FULLSCREEN(on), der auch
aus der SVGA-Auflösung heraus direkt in den VGA-Modus 320x200 umschalten kann.
FULLSCREEN(off) schaltet wieder zurück. Aber, Vorsicht ... is cool, man! Und
außerdem noch ohne Gewähr!)
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 einigen Fällen die VISIBLEPAGE-Umschaltung
ohne Wirkung bleiben. Verfügt Ihre Garfikkarte jedoch über einen Treiber der
VESA 1.2-Version, so sollte die Page-Umschaltung funktionieren.