我目前正在学习Windows 7上的汇编程序,并且我想制作一个游戏(仅供教育用途)。我发现了一个关于如何在DOS上使用模式13h在程序集中编程VGA的资源。这让我想到:有没有一种方法直接编程在Windows 7中的图形卡,而不使用高级图形库?如果这不是一个选项,你可以用程序集中的图形库编写图形程序吗?win32程序集编程图形卡
由于提前,
RileyH
我目前正在学习Windows 7上的汇编程序,并且我想制作一个游戏(仅供教育用途)。我发现了一个关于如何在DOS上使用模式13h在程序集中编程VGA的资源。这让我想到:有没有一种方法直接编程在Windows 7中的图形卡,而不使用高级图形库?如果这不是一个选项,你可以用程序集中的图形库编写图形程序吗?win32程序集编程图形卡
由于提前,
RileyH
如果您不想要高级图形库,请将自己限制为低级别的内容,如SetPixel()
;这几乎是int 13H
提供的服务级别。不,不可能使用int 13H
或直接在Windows中使用硬件。不管怎样,你不需要VGA模式 - 这对于每一个明智的现代显卡来说都是一个巨大的降低能力。
你可以用程序集写所有你想要的东西,但它会毫无意义;调用堆栈的顶部通常不是瓶颈所在。至少不适用于2D游戏。
因此学习GDI和/或DirectX。除非你知道你绝对必须,否则不要使用组装。大会不适合教育项目。
当你说“大会不适合教育项目”时,我完全不同意。学习大会教授了很多关于计算机如何在硬件级别工作的知识,并且使用Assembly进行实验可以让您以您(一般)可以理解的方式掌握主题。 – SirPython 2015-02-19 02:44:30
由于Windows在保护模式下运行时,你无法直接从用户模式访问硬件资源。所有HW资源(包括图形卡)只能从内核模式模块(即驱动程序)访问。如果您需要从用户模式访问,则需要解决卡的驱动程序以执行请求的操作。它的接口不仅仅是发送想要使用的汇编命令,而是定义了一组暴露的函数。高级图形库可能会隐藏需要知道这个接口及其用法。寻址图形库完全取决于特定的库定义和(再次)暴露的接口。基本上,它应该可以用任何语言来解决,包括汇编。
你能推荐我应该使用的任何特定的图形库吗? – Progrmr 2013-03-22 10:31:51
正如你提到的模式13h,我假设你想做2D游戏。您可以自己处理屏幕缓冲区,以您选择的任何格式(256色RGB,palettized,24位ARGB等),然后通过更高级别的库(如libSDL)“渲染”它,或者甚至可以在Windows本身中使用GDI。直接打开显卡不是我推荐的(非常复杂)
您可以使用[DOSBOX](http://www.dosbox.com/)在Windows中运行DOS程序。你也可以在程序集中编写Windows GUI程序。 GunnerInc撰写了关于如何在汇编中编写GUI程序的教程:[NASM - 使用GTK的Linux/Windows Cross OS应用程序](http://www.dreamincode.net/forums/topic/292403-nasm-cross-os-应用换linuxwindows-使用-GTK /)。 – nrz 2013-03-22 10:18:09