Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows win32汇编编程图形卡_Windows_Assembly_Graphics - Fatal编程技术网

Windows win32汇编编程图形卡

Windows win32汇编编程图形卡,windows,assembly,graphics,Windows,Assembly,Graphics,我目前正在学习Windows7上的汇编程序,我想制作一个游戏(仅用于教育目的)。我找到了一个关于如何在DOS上使用13h模式在汇编中编程VGA的资源。这让我思考:有没有一种方法可以在Windows7中直接编程图形卡而不使用高级图形库?如果这不是一个选项,您可以使用汇编中的图形库编写图形程序吗 提前感谢, RileyH由于Windows在保护模式下运行,您无法直接从用户模式访问硬件资源。所有硬件资源(包括图形卡)只能从内核模式模块(即驱动程序)访问。如果需要从用户模式访问,则需要寻址卡的驱动程序以

我目前正在学习Windows7上的汇编程序,我想制作一个游戏(仅用于教育目的)。我找到了一个关于如何在DOS上使用13h模式在汇编中编程VGA的资源。这让我思考:有没有一种方法可以在Windows7中直接编程图形卡而不使用高级图形库?如果这不是一个选项,您可以使用汇编中的图形库编写图形程序吗

提前感谢,


RileyH

由于Windows在保护模式下运行,您无法直接从用户模式访问硬件资源。所有硬件资源(包括图形卡)只能从内核模式模块(即驱动程序)访问。如果需要从用户模式访问,则需要寻址卡的驱动程序以执行请求的操作。它的接口不仅仅是发送您想要使用的汇编命令,而是一组已定义的公开函数。高级图形库可能会隐藏了解此接口及其用法的需要。寻址图形库完全取决于特定的库定义和(再次)公开的接口。基本上,它应该可以从任何语言进行寻址,包括汇编语言。

正如你提到的模式13h,我假设你想做2D游戏。您可以自己处理屏幕缓冲区,使用您选择的任何格式(256色RGB、调色板、24位ARGB等),然后通过更高级别的库(如Windows中的GDI)进行“渲染”。我不建议直接点击图形卡(非常复杂)

如果您不想要高级图形库,请将自己限制在一个图形库中的低级内容,如
SetPixel()
;这几乎就是
int13h
提供的服务水平。不,不能在Windows中使用
int13h
或直接使用硬件。无论如何,你也不需要VGA模式——这是每一个明智的现代图形卡在性能上的一个巨大的下降

你可以随心所欲地在汇编中编写,但这是毫无意义的;调用堆栈的顶部通常不是瓶颈所在的位置。至少不是2D游戏


因此,请学习GDI和/或DirectX。不要使用汇编,除非你知道你必须这么做。程序集不适用于教育项目。

您可以使用它在Windows中运行DOS程序。您也可以在汇编中编写Windows GUI程序。GunnerInc已经写了一篇关于如何在汇编中编写GUI程序的教程。但这真的有可能吗?也就是说,我可以在Windows 7上用DOS VGA做同样的事情吗?不可以用今天的卡。正如上面icepack所说,硬件资源是受保护的。你可以从总成上打司机,尽管我看不出这有什么意义。-但是,我想你可以运行一个DOS/286模拟器来模拟过去的环境,然后在那里进行组装?你能推荐我应该使用的特定图形库吗?我完全不同意你说的“组装不是用于教育项目的”。学习汇编可以教你很多关于计算机如何在硬件层面上工作的知识,而使用汇编进行实验可以让你以一种你(普通人)能够理解的方式掌握这个主题。