前一段时间一直折腾linux下的分辨率问题,向同学请教有关于framebuffer的知识。提高分辨率后字符显示更加清晰,显示的内容更多。我到国内外各个论坛和网站搜索,却没有找到dos类似的工具实现高分辨率文字显示,论坛的好多人也试图寻找类似的解决方案,结果多是无功而返。
这里说高分辨率下的文字显示其实是不恰当的,文字模式其实是固定的,没有分辨率一说,标准的是80x25,意思是显示25行,每行80个字符(当然还有43和50行),这样的显示显然不能满足现在日益增大的显示屏。高分辨率下的字符其实都是图形,每个字都是拿点拼成的,需要更多的存储空间,而不像字符模式,每个字符两个字节就可以控制内容、颜色、闪烁等等。
linux采用framebuffer driver,Linux是工作在保护模式下(用户进程无法直接操作硬件),所以无法使用显卡BIOS里提供的中断来实现直接写屏,Linux采用FrameBuffer这个抽象设备来实现直接写屏。
我在空闲时间阅读了VESA显示模式的书,VESA采用中断可以实现用户屏幕每个像素的直接控制,进而实现高分辨率的输出。我编写了下面的程序vmc(Video Mode Changer),希望能够对大家有所帮助。
现在大多的显卡都支持VESA标准了(最新3.0),但是显示芯片生产厂家标准不一,方案各异,虽然windows下驱动能够达到如1600x1200x32bit的显示模式,但是VESA直接写屏模式不一定能支持这么高的效果。vmc能够判断您的显卡是否采用VESA标准,并且检测其支持的所有显示模式,将他们(模式代号,分辨率,色深)列表输出,然后就可以采用“vmc 模式代号”实现高分显示了。
vmc /l 检测您的显卡,并列出支持的显示模式
vmc /c 检测并输出现在的显示模式代号
vmc NNN 将显示模式变为NNN(模式代号)
vmc /? 帮助
详细情况请阅读附件中readme.txt。
这里说高分辨率下的文字显示其实是不恰当的,文字模式其实是固定的,没有分辨率一说,标准的是80x25,意思是显示25行,每行80个字符(当然还有43和50行),这样的显示显然不能满足现在日益增大的显示屏。高分辨率下的字符其实都是图形,每个字都是拿点拼成的,需要更多的存储空间,而不像字符模式,每个字符两个字节就可以控制内容、颜色、闪烁等等。
linux采用framebuffer driver,Linux是工作在保护模式下(用户进程无法直接操作硬件),所以无法使用显卡BIOS里提供的中断来实现直接写屏,Linux采用FrameBuffer这个抽象设备来实现直接写屏。
我在空闲时间阅读了VESA显示模式的书,VESA采用中断可以实现用户屏幕每个像素的直接控制,进而实现高分辨率的输出。我编写了下面的程序vmc(Video Mode Changer),希望能够对大家有所帮助。
现在大多的显卡都支持VESA标准了(最新3.0),但是显示芯片生产厂家标准不一,方案各异,虽然windows下驱动能够达到如1600x1200x32bit的显示模式,但是VESA直接写屏模式不一定能支持这么高的效果。vmc能够判断您的显卡是否采用VESA标准,并且检测其支持的所有显示模式,将他们(模式代号,分辨率,色深)列表输出,然后就可以采用“vmc 模式代号”实现高分显示了。
vmc /l 检测您的显卡,并列出支持的显示模式
vmc /c 检测并输出现在的显示模式代号
vmc NNN 将显示模式变为NNN(模式代号)
vmc /? 帮助
详细情况请阅读附件中readme.txt。




