我希望自己学习图形库,并稍微玩一下。我建立了一个小程序,将线条和形状定义为像素列表,但我找不到直接访问屏幕的方法,这样我就可以在屏幕上显示点而不需要任何中间点。
我的意思是我不想使用任何预先构建的图形库,如gnome,cocoa等。我通常使用Python编写代码,我的程序使用Python,但我也可以编写和集成C模块。
我知道直接访问屏幕硬件会夺走Python的多平台方面,但我为了学习而无视它。那么:有没有办法直接在Python中访问硬件,如果有的话,它是什么?
我希望自己学习图形库,并稍微玩一下。我建立了一个小程序,将线条和形状定义为像素列表,但我找不到直接访问屏幕的方法,这样我就可以在屏幕上显示点而不需要任何中间点。
我的意思是我不想使用任何预先构建的图形库,如gnome,cocoa等。我通常使用Python编写代码,我的程序使用Python,但我也可以编写和集成C模块。
我知道直接访问屏幕硬件会夺走Python的多平台方面,但我为了学习而无视它。那么:有没有办法直接在Python中访问硬件,如果有的话,它是什么?
这似乎是一个很好的自学路径,我会加上我的2美分价值,并建议你考虑看看 GObject的, 开罗 和 Pygame的 模块一段时间。
Python GObject的 模块可能处于比当前兴趣更高的级别,但它可以使用像素级绘图 开罗 (见 主页)以及使用Python为便携式GUI应用程序提供通用基础
Pygame的 还有像素级方法以及图形驱动程序的访问方法(在更高级别) - 这是一个快速 代码示例
不,Python不是这种原始硬件访问视频卡的最佳选择。我建议在DOS下编写C语言。嗯,实际上,我不推荐它。这是一件可怕的事情。但是,这就是我学会如何做到这一点的原因,而且它可能与您在没有任何中间件的情况下直接访问硬件一样友好。
我说DOS而不是Linux或NT,因为这些都不会让你直接访问视频硬件而无需编写驱动程序。这意味着必须学习整个驱动程序API,并且你需要调用很多“魔法”,这不会非常明显,因为在Windows NT中编写视频驱动程序相当复杂。
我说C而不是Python,因为它给你真正的指针,并且能够用它们做愚蠢的事情。在DOS下,您可以写入C中的任意物理内存地址,这似乎是您想要的。试图让Python在一个足够糟糕的操作系统下运行,以便直接进行硬件访问本身就是一种挫败感,即使你只想做一些Python擅长的简单事情。
并且,正如其他人所说,不要指望在现实世界中使用您在该项目中学到的任何东西。这可能很有趣,但是如果你试图以这种方式编写一个真实的应用程序,那么你很快就会被那些需要维护代码的人所击中。
现在这是一个很老的线索,但我在思考同样的问题时偶然发现了它。
我曾经用汇编语言编程。在我的日子里,在屏幕上绘图只是(?)将值放入内存位置。该值打开或关闭像素并定义其颜色。
“捅”一词来自Basic,而不是汇编程序。在汇编程序中,你必须将一个值写入数据寄存器,然后告诉处理器使用另一个命令放置数据的位置并指定一个地址寄存器,通常是十六进制形式!每个不同的处理器都有自己的汇编语言。但是hec代码很快!
随着硬件的发展,我发现图形硬件编程变得越来越复杂。除了现在简单地定义一个像素之外,它还有很多。图形子系统有自己的处理器 - 或处理器 - 而且你必须学会与之交谈。处理器不只是在内存位置上填充内容。 (我相信曾经是世界上最快的超级计算机曾经在图形芯片上跑了一段时间!)'Plonk'顺便说一句,它不是一个基本命令。
抱歉;我离题了。在回答原始海报的查询时,我相信通过试验Raspberry Pi可以最好地实现理解图形绘制过程的目标。它兼容Python,因此非常适合这项工作。它的硬件文档齐全,价格便宜且易于使用。
希望这有助于某人,干杯,M