我目前正在 Windows 7 上学习汇编程序,并且我想制作一个游戏(仅用于教育目的)。我找到了有关如何在 DOS 上使用 13h 模式在汇编中对 VGA 进行编程的资源。这让我想到:有没有一种方法可以直接在 Windows 7 中对显卡进行编程而不使用高级图形库?如果这不是一个选项,你能用汇编的图形库编写图形程序吗?
提前致谢,
莱利
如果您不想要高级图形库,请将自己限制在一个中的低级内容中,例如SetPixel()
;这几乎是int 13H
提供的服务水平。不,不可能int 13H
在 Windows 中直接使用或使用硬件。而且您无论如何都不需要 VGA 模式 - 对于每一个明智的现代显卡来说,它都是一个巨大的功能下降。
您可以随心所欲地在汇编中编写,但这毫无意义;调用堆栈的顶部通常不是瓶颈所在。至少不适合 2D 游戏。
所以学习 GDI 和/或 DirectX。并且不要使用汇编,除非并且直到你知道你绝对必须这样做。大会不适用于教育项目。
当您提到模式 13h 时,我假设您想做 2D 游戏。您可以自己处理屏幕缓冲区,以您选择的任何格式(256 色 RGB、调色板、24 位 ARGB 等),然后通过更高级别的库(如libSDL甚至是 Windows 本身的 GDI)“渲染”它。我不建议直接打显卡(非常复杂)
由于 Windows 在保护模式下运行,因此您无法直接从用户模式访问硬件资源。包括显卡在内的所有硬件资源都只能从内核模式模块(即驱动程序)访问。如果您需要从用户模式访问,则需要寻址卡的驱动程序以执行请求的操作。它的接口不仅仅是发送您想要使用的汇编命令,而是一组已定义的公开函数。高级图形库可能隐藏了了解此接口及其用法的需要。寻址图形库完全取决于特定的库定义和(再次)公开的接口。基本上,它应该可以从任何语言(包括汇编语言)中寻址。