c-底层图形编程/使用屏幕硬件



据说"低级"编程语言是一种"接近"硬件的语言。我使用C、Python和Java,通常C是一种"较低级别"的语言,或者比其他两种语言更接近硬件。这当然是有道理的,因为python和java都是C语言派生的。

所以我想知道的是,使用计算机屏幕在显示器上显示像素图形的"最低级别"或"最接近硬件"的方式是什么?

基本上,屏幕是如何在编程"后端"上工作的?

为了清楚起见,我会打个比方。当我第一次了解python列表时,我认为它们是存储在一起的多个数字。后来我了解到,它们实际上是指向内存中为数组长度保留的位置的指针,以数据类型为单位。

所以我对屏幕的了解是,它是一个x宽y长的像素网格。当你用接受某种形式矢量的函数来引用这个网格时,一个像素会在该像素的坐标处点亮指定的颜色(0,0当然从左上角开始。)在这些函数中到底发生了什么

s机器代码是最低的。这甚至仍然会被CPU解释。(当然取决于CPU)

不过,一般情况下,大多数人只会选择组装程序。

(我没有提到GPU编程,因为你提到了Python、Java、C,并假设你正在努力掌握旧的渲染方式)。

编辑

错过了您的另一个问题

指针是在内存块需要引用时使用的。简单的数据类型不需要指针(但仍然可以有指针)。这取决于语言及其允许数据类型分配的方式。

在数据列表/数组的情况下,你不能在堆上分配它,因为它的长度不同,所以操作系统会请求一个内存块,它会返回一个指向可使用的内存段的指针。操作系统并不关心如何使用它,而是由应用程序来知道要分配多少以及应该如何使用它

这就是为什么语言使用数据类型,这样编译器就知道如何操作内存块。现在,没有什么可以阻止您直接操作这个内存块,但您必须遵守编译使用的规则,因为任何进一步执行的代码都可能导致错误。

编辑

其他基于评论。

当修改一个缓冲区时,如果链接到硬件,你需要了解缓冲区的规格。通常,您已经请求设备使用特定的操作模式,并且您知道硬件的行为。这就是为什么出现了不同的标准来帮助程序员使用这些标准。我将参考一个非常好的老式硬件编程指南,它应该能帮助你很多PC游戏程序员的百科全书

这些概念仍然适用于现在在windows中的操作系统——您将使用GDI将这些屏幕和GDI接口分配给驱动程序来呈现所需的图像。我链接的指南是关于直接使用没有图形支持的旧操作系统中的硬件(例如MS-DOS)

您要查找的单词是帧缓冲区。有关介绍,请参阅http://en.wikipedia.org/wiki/Framebuffer

最新更新