GfxLib - Přehled o grafické knihovně FreeBASIC
 

GfxLib je vestavěná grafická knihovna, je tedy součástí FreeBASIC. Stejně jako re-vytváří QuickBASIC každý grafický příkaz, GfxLib má vestavěny příkazy zpracování vstupů z klávesnice a myši.(?) Hlavní přispěvatelé knihovny jsou Lillo, CoderJeff a DrV.

Knihovna podporuje různé ovladače v závislosti na platformě:

ScreenControl může být použito (SET_DRIVER_NAME 103) k přepsání výchozích předvoleb ovladače.

Rozdíly v platformách

  • V DOS bude GfxLib vytvářet a řídit šipku myši, pokud bude detekován ovladač myši. Neexistuje žádný "oficiální" způsob, jak to zakázat. Také si všimněte, že šipka nereaguje na pohyb myši, je-li obrazovka uzamčena.
  • V DOS, Windowing a OpenGL související příkazy a přepínače nejsou k dispozici (sice existují, ale nedělají nic, nebo vrací některé hodnoty bez jakéhokoliv významu).
  • V DOS není k dispozici nastavení obnovovací frekvence (některé karty VESA to podporují, ale FreeBASIC prozatím ne).
  • V DOS musí rozlišení odpovídat podporované grafické kartě. GfxLib se bude snažit nalézt vhodný režim z režimů VGA, ModeX nebo VESA, preferujíc VESA LFB interface, je-li dostupný. Jinak VESA banked. Nepodporovaná rozlišení mohou v současné době vést k selhání programu (pokud se vám nepodaří zjistit SCREENPTR pro ZERO, před jeho použitím), ačkoliv v budoucnu se chceme s GfxLib pokusit najít rozumné řešení. Pro optimální kompatibilitu by jste měli používat podporovaná "bezpečná" rozlišení jako 640x480 a 800x600, a možná 1024x768. Existují i jiná rozlišení, která by měla fungovat, jako 768x576, ale tato jsou specifická podle dodavatele a chybí mnoha grafickým kartám. Také režimy 1024x768 a vyšší nejsou k dispozici na starších kartách a noteboocích.
  • Bylo pozorováno, že SCREEN a SCREENRES selhaly při vyčištění obrazovky v systému DOS. Ve skutečnosti jde pravděpodobně o chybu BIOS, pro kterou v GfxLib není v současné době řešení.

Rozdíly oproti QB

  • Grafická podpora byla interně přepracována. QB užívá VGA grafické režimy a zapisuje přímo do VGA RAM. Více stránek šlo použít tak dlouho, dokud je karta podporovala. FB užívá backbuffery, jeden na definovanou stránku a kopii pro video RAM (VGA (DOS), VESA (DOS), DirectX (Win32), ...) na pozadí. Grafické příkazy fungují jako kdysi v QB, ale s několika důležitými rozdíly:
    • Aktualizace pozadí obrazovka žere značné množství výkonu procesoru.
    • There is a thread (Win32 and Linux) or ISR (DOS, uses the PIT) active for this.
      (?Proto je tam aktivní vlákno (thread) pro Win32 a Linux, nebo ISR(DOS užívající PIT))
    • Míchání FreeBASICovské podpory grafiky s low-level přístupy obrazovky (VGA) není podporováno ani v systému DOS. Je však možný přímý přístup do paměti obrazovky pomocí Screenptr a Screenlock. Tento je plně přenositelný. V DOS VGA a VESA je stále k dispozici, ale nemůže být míchán s grafickou podporou FreeBASICu.

Viz též



Překlad: Gmisiycs 9.2.2016