GfxLib - FreeBASIC graphics library overview
 

GfxLib是FreeBASIC中包含的内置图形库。除了重新创建每个QuickBASIC图形命令,GfxLib都有内置命令来处理键盘和鼠标的输入。图书馆的主要贡献者是Lillo,CoderJeff和DrV。

图书馆根据平台支持各种驱动程序:

ScreenControl(SET_DRIVER_NAME 103)覆盖默认驱动程序首选项。

平台差异

  • 在DOS中,如果检测到鼠标驱动程序,GfxLib将创建并管理鼠标箭头。没有“官方”的方式来禁用它。另请注意,屏幕锁定时,箭头不会对鼠标移动做出反应。
  • 在DOS中,Windowing和OpenGL相关的命令和开关不可用(它们存在,但什么也不做,或返回一些没有意义的值)
  • 在DOS中,刷新率设置不可用(一些VESA卡支持它,但FreeBASIC现在不支持)
  • 在DOS中,分辨率必须与显卡支持的分辨率相匹配。GfxLib将尝试从VGA模式,ModeX或VESA找到一个适当的模式,更喜欢VESA LFB接口(如果可用),否则使用VESA。不支持的分辨率可能会导致程序崩溃,但将来GfxLib可能会尝试找到紧密匹配。为了获得最佳兼容性,您应该支持“安全”的分辨率,如640x480和800x600,也可以支持1024x768。有各种各样的附加模式,如768x576,但它们是供应商特定的,并且缺少许多其他卡。旧卡和笔记本电脑上也不提供1024x768及以上的模式。
  • 观察到SCREEN和SCREENRES可能无法在DOS中清除屏幕,实际上这可能是GfxLib目前无法解决的BIOS错误。

与QB差别

  • 图形支持被内部重新设计。QB使用VGA图形模式,直接写入VGA RAM。只要卡支持它们,可以使用多页。FB使用后置缓冲区,每个定义的页面一个,并将它们复制到视频RAM(VGA(DOS),VESA(DOS),DirectX(Win32),...))。图形命令像在QB中一样工作,但存在一些显着的差异:
    • 背景屏幕更新占用了相当多的CPU性能。
    • 有一个线程(Win32和Linux)或ISR(DOS,使用PIT)为此活动。
    • 混合FB的图形支持与低级屏幕访问(VGA)不支持,即使在DOS。然而,使用Screenptr和Screenlock可以直接进行屏幕内存访问,并且是完全便携的。在DOS中,VGA和VESA仍然可用,但不能与FB的图形支持混合使用。

参考