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