查看“How do I set a graphics mode”的源代码
←
How do I set a graphics mode
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
当PC第一次启动时,它被设置为标准的已知VGA文本模式。 但是在某些时候,你将希望开始在屏幕上绘制像素而不是文本。 这要求你从文本模式切换到“图形”模式。 在16位模式下,通过调用中断0x10的不同函数,你可以轻松地使用BIOS在不同图形模式之间切换。 但是,一旦进入保护模式,事情就会变得更加困难。 ==使用UEFI== 对于EFI,标准是通用图形适配器(UGA-Universal Graphics Adapter)。 它有严重的缺点 (例如无法报告帧缓冲区地址),因此在UEFI中,它被 [[GOP|图形输出协议]] (GOP-Graphics Output Protocol) 取代。 ==使用BIOS== 你在PC中找到的每个视频卡都附带一段代码,可以对其进行初始化,即视频BIOS。 该bios预计将在 [[Real Mode|实模式]] 运行,并且只要你在,你就可以通过在寄存器中使用正确的值调用软中断int [http://www.ctyme.com/intr/int-10.htm 0x10] 直接访问所有函数。 '''如果你的内核是基于某个教程的,你可能不能这么做''',因为对于几乎所有的教程,你都处于保护模式,而不是真实模式。 许多显卡有两个接口,一个[[:Category:VGA|VGA interface]]用于低分辨率,[[GETWING VBE Mode Info|VESA VBE]]用于高分辨率。 或者,你可以编写自己的代码来直接处理图形硬件。 在[[Protected Mode|保护模式]]或[[Long Mode|长模式]]中,无法直接访问BIOS接口。 有很多方法可以用来继续使用它。 它们都通过设置或模拟实模式并以这种方式调用中断来工作。 ===通过BIOS绘图的方法=== * 回到实模式,然后调用BIOS。 最简单的解决方案,也是最丑陋的。 执行此操作时,请注意将所有内容恢复为实模式值。 * 使用 [[Virtual 8086 Mode|虚拟8086模式]]。 保护模式下最常见的良好解决方案。 这样,你就可以从虚拟机风格的环境中运行BIOS,从而保持对进程的控制。 然而,长模式下虚拟8086模式不可用。 * 编写/使用模拟器。 最慢和最繁琐的方法,但它的优势是它可以在任何条件下工作,包括长模式和其他平台。 == 编写特定的驱动程序 == 另一种方法是根本不使用BIOS。 在这种情况下,你必须编写自己的驱动程序才能与硬件进行交互。 在不使用BIOS的情况下获取图形模式的最简单方法是[[VGA Hardware|开发]]或[[VGA Resources|重用现有]]VGA驱动程序。 这为你提供了几乎所有硬件上的所有低分辨率模式,并且比设置任何类型的虚拟机更容易完成。 但是,如果要支持高分辨率,则必须为你希望OS支持的 [[Accelerated Graphic Cards|每个图形卡]] 编写驱动程序。 '''只有当你有不止一次生命要浪费时才推荐这么干。''' 请注意,许多视频卡都没有可用的“官方”文档, 并且你需要求助于二手信息 (往往是不完整的) 和现有的 [http://ftp.x.org/pub/current/src/driver/ 驱动程序实现]。 如果你想要硬件加速,这是唯一的方法。 [[Category:FAQ]] [[Category:Video]]
返回至“
How do I set a graphics mode
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息