Referenz - Geschwindigkeit und Größe
Geschwindigkeit: Die interne Gfxlib benutzt den normalen RAM als Seitenspeicher. Alle Lese-/Schreibzugriffe auf den Seitenpuffer (inklusive Direktzugriffe via SCREENPTR) werden im RAM ausgeführt. Bei Win32 und Linux übernimmt ein eigener Thread die Screen-Updates, und verwendet dabei eine separat wählbare Bildschirmwiederholrate (wenn keine Rate angegeben wird, ermittelt FreeBASIC eine Standardrate; siehe dazu SCREENRES). Die Farbkonversion wird, falls nötig, ebenfalls übernommen. Obwohl dies überflüssig für Vollbild-Modi scheint, ist es nötig für Fenstertechniken. Um die Bibliothek klein und einfach zu halten, wurde dieselbe Methode auch für das Vollbild benutzt, auf Kosten einer kleinen 'Zeitstrafe' wegen der Speicherkopie. MMX wird jedoch, wo immer möglich, in der gesamten Gfxlib benutzt, womit immer noch eine hohe Geschwindigkeit der Bibliothek erreicht wird.
Größe: Eines der Hauptziele der Gfxlib war es, unabhängig von externen Bilbiotheken zu sein. Die Bilbiothek hat ihre eigenen Treiber (jeder 10-15 KB) und ist komplett unabhängig. Natürlich müssen in Ihre Programme auch andere Codes eingebunden werden, zumindest zur Grafikinitialisierung, Schriftart-Dateien, Unterstützung für alle Farbtiefen, Standardpaletten und Ähnliches. Das bedeutet, dass die Benutzung der Gfxlib Ihre Programme um 40 bis 90 KB vergrößern wird, abhängig von den Funktionen, die Sie verwenden (fbc wird nur das linken, was Sie wirklich benutzen). Dafür sind Ihre Programme Standalones, also von Runtime-DLLs unabhängig. Natürlich bedeutet Standalone nicht, dass überhaupt keine Abhängigkeiten bestehen; es handelt sich allerdings nur Abhängigkeiten von den Systembibliotheken, von denen Sie annehmen können, dass sie immer vorhanden sind.
Folgende Daten werden zusätzlich geladen, wenn Sie die Gfxlib benutzen:
Win32 | Linux |
---|---|
user32.dll (ddraw.dll und dinput.dll nur zur Laufzeit verwendet) | libX11, libXext, libXxf86vm, libpthread |
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|