GfxLib - Обзор графической библиотеки FreeBASIC
 

GfxLib - встроенная графическая библиотека, включенная в FreeBASIC. Библиотека воссоздает каждую команду графики QuickBASIC, плюс у GfxLib есть встроенные команды для обработки ввода от клавиатуры и мыши. Наибольший вклад в библиотеку внесли - Lillo, CoderJeff и DrV.

Библиотека поддерживает различные драйверы в зависимости от платформы:

ScreenControl можно использовать (SET_DRIVER_NAME 103) для переопределения предпочтительного драйвера по умолчанию.

Различия платформ

  • В DOS GfxLib будет создавать и "управлять" стрелкой мыши, если драйвер мыши будет обнаружен. Нет никакого "официального" способа отключить это. Также стрелка не реагирует на перемещения мыши, если экран заблокирован.
  • В DOS не доступны связанные команды и переключатели окон  и OpenGL (они существуют, но ничего не делают или возвращают бесполезные значения)
  • В DOS разрешение должно соответствовать тому, которое поддерживается видеокартой. GfxLib постарается найти подходящий режим из режимов VGA, MoDeX или VESA, предпочитая интерфейс VESA LFB если таковой имеется, или выбор будет VESA. Неподдерживаемые разрешения могут в настоящее время разрушить программу, хотя в будущем GfxLib может попытаться найти близкое соответствие. Для оптимальной совместимости Вы должны поддерживать "безопасные" разрешения такие как 640x480 и 800x600, и возможно 1024x768. Есть различные дополнительные режимы как 768x576 , но они могут отсутствовать на многих других видеокартах. Также режимы 1024x768 и выше не доступны на более старых видеокартах и ноутбуках.

Отличия от QB

  • Графическая поддержка была внутренне перепроектирована. QB использовал графические режимы VGA и записал непосредственно в RAM VGA. Многократные страницы были доступны, пока карта поддерживала их. FB использует задний буфер, один на определенную страницу, и копирует их в видеопамять (VGA (DOS), VESA (DOS), DirectX (Win32)...) в фоновом режиме. Графические команды действительно работают так же, как вы  привыкли в QB, но несколько заметных различий присутствуют:
    • Обновление фона экрана ест значительное количество производительности процессора.
    • Есть поток (Win32 и Linux) или ISR (DOS, использхующий PIT) активный для этого.
    • Смешивание графической поддержки FB с низкоуровневыми экранными доступами (VGA) не поддерживается, даже в DOS. Однако есть прямой доступ к памяти хранения содержимого экрана ( возможное использование Screenptr и Screenlock, это полностью переносимо). В DOS VGA и VESA все еще доступны, но не могут быть смешаны с графической поддержкой FB.

См. также