<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=How_do_I_set_a_graphics_mode</id>
	<title>How do I set a graphics mode - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=How_do_I_set_a_graphics_mode"/>
	<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=How_do_I_set_a_graphics_mode&amp;action=history"/>
	<updated>2026-04-04T01:41:20Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=How_do_I_set_a_graphics_mode&amp;diff=843&amp;oldid=prev</id>
		<title>Zhang3：创建页面，内容为“当PC第一次启动时，它被设置为标准的已知VGA文本模式。 但是在某些时候，你将希望开始在屏幕上绘制像素而不是文本。 这要求你从文本模式切换到“图形”模式。 在16位模式下，通过调用中断0x10的不同函数，你可以轻松地使用BIOS在不同图形模式之间切换。 但是，一旦进入保护模式，事情就会变得更加困难。  ==使用UEFI== 对于EFI，标准是通用图形适…”</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=How_do_I_set_a_graphics_mode&amp;diff=843&amp;oldid=prev"/>
		<updated>2022-03-12T13:06:07Z</updated>

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