SVGA und Farben.


Wer hat sich nicht schon immer mal gewünscht auch in QB die Schwelle der 256 Farben zu durchbrechen bzw. eine höhere Auflösung als 640x480 einzustellen?

Um SVGA - Modis einzustellen (also Auflösungen über 640x480x16 Farben), bzw. Grafiken in einem solchen Modus auszugeben (Linien zeichnen, Punkte setzen, Bilder laden etc.) bedient man sich am besten verschiedener Librarys. Im ersten Moment ist der Umgang damit vielleicht etwas gewöhnungsbedürftig jedoch, nach einiger Einarbeitung wird man feststellen, daß man "ohne" gar nicht mehr möchte. Die fähigsten Librarys die alle notwendigen Befehle und Funktionen enthalten um in SVGA arbeiten zu können sind eigentlich nur zwei.

Die SVGAQB Library von Zephyr Software und die Future-Library von Future-Software. Von ersterer würde ich allerdings abraten. Nicht das sie nicht den gleichen Leistungsumfang hätte, jedoch ist diese Library eine Shareware - Version. D.h. man darf Programme die mit ihr entwickelt wurden eigentlich nicht weitergeben. Daher beziehe ich mich (und auch die meisten anderen Programmierer) ausschließlich auf die Future-Library. Siehe dazu ins Tutorial Librarys. Keine Sorge, die Zephyr-Library kann nichts was die Future-Library nicht auch kann, du verpasst also nichts.

Zum Thema Farben

...gibt es ebenfalls nicht viel zu sagen. Ein kleiner Tipp ist folgender. Vergiss den PALETTE-Befehl. Er ist nicht nur umständlich in der Handhabung, sondern auch noch langsam. Besser ist es die Werte für Rot, Grün und Blau direkt über OUT-Kanäle zur Grafikkarte zu schicken. Dies funktioniert nicht nur zum Setzen von Farben, sondern man kann sie genau so wieder auslesen. Auf diese Weise lassen sich auch Fader und ähnliche Effekte sehr einfach realisieren. Hier nur mal das Prinzip und ein Beispiel

Farbwerte setzen

FOR I% = 0 TO 15
   OUT &H3C8, I%
   OUT &H3C9, R%
   OUT &H3C9, G%
   OUT &H3C9, B%
NEXT

Farbwerte auslesen

FOR I% = 0 TO 15
   OUT &H3C7, I%
   R% = INP(&H3C9)
   G% = INP(&H3C9)
   B% = INP(&H3C9)
NEXT