c – GNU/Linux中“绘图”抽象的绝对最低级别是什么?

动机 – 用C(和装配,如果需要)编写程序,为屏幕红色的矩形区域着色.

STRICT要求 – 在文本/控制台模式下使用最小的实用程序和接口运行GNU / Linux.所以没有X(或类似Wayland / Mir),没有非默认(内核提供的POSIX,LSB等)库或接口,除了监视器的设备驱动程序之外没有其他假设.

实际上,我正在寻找的是有关如何编写程序的信息,该程序最终将通过VGA端口发送信号并通过电缆连接到显示器,以便为屏幕的特定部分着色.

抱歉,如果这听起来很粗鲁,但没有“你为什么要这样做?”或者“你为什么不使用ABC库?”回答.我试图了解如何编写X服务器的实现或内核帧缓冲(/ dev / fb0)库.可以提供指向C库源的链接.

最佳答案

no extra assumptions except the presence of the device driver for the monitor.

这意味着您可以使用X或Wayland,因为这些是Linux上的图形驱动程序基础结构.

Linux(内核)本身不包含任何图形基元.它提供了一些与GPU通信的接口,在其上分配内存并配置屏幕上的帧缓冲.但除了原始帧缓冲内存访问外,Linux内核无法执行绘图操作.为此,您需要在用户空间中使用一些基础结构

Wayland构建于DRI2之上,后者又与DRM Kernel-API对话.然后你需要GPU依赖状态跟踪器. Mesa为许多GPU提供状态跟踪器,并提供OpenGL和OpenVG前端.

NVidia和ATI propiatary,闭源图形驱动程序仅适用于X.因此,对于那些使用GPU的人来说,你必须使用X.就是这样.

除此之外,您可以通过/ dev / fbdev操作屏幕上的帧缓冲存储器,但这只是像素推动,没有任何GPU加速.

相关文章

一.C语言中的static关键字 在C语言中,static可以用来修饰局...
浅谈C/C++中的指针和数组(二) 前面已经讨论了指针...
浅谈C/C++中的指针和数组(一)指针是C/C++...
从两个例子分析C语言的声明 在读《C专家编程》一书的第三章时...
C语言文件操作解析(一)在讨论C语言文件操作之前,先了解一下...
C语言文件操作解析(三) 在前面已经讨论了文件打开操作,下面...