GfxLib - встроенная графическая
библиотека, включенная в FreeBASIC. Библиотека воссоздает каждую
команду графики QuickBASIC, плюс у GfxLib есть встроенные команды для
обработки ввода от клавиатуры и мыши. Наибольший вклад в библиотеку
внесли - Lillo, CoderJeff и DrV.
Библиотека поддерживает различные драйверы в зависимости от платформы:
- Все:
- Null Ничего не делает. Позволяет использовать
графические функции при работе с буфером памяти, ничего не отбражая в
графическом окне. (gfxlib2/gfx_driver_null.c)
- Win32:
- Linux & другие:
- DOS:
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.
См. также