gpt4 book ai didi

c++ - GNU/Linux 中 "drawing"抽象的绝对最低级别是什么?

转载 作者:IT王子 更新时间:2023-10-29 00:57:59 46 4
gpt4 key购买 nike

动机 - 用 C(和汇编,如果需要)编写一个程序,将屏幕上的矩形区域涂成红色。

严格要求 - GNU/Linux 在 text/console 模式下运行最少的实用程序和界面。因此,没有 X(或类似 Wayland/Mir 的等价物),没有非默认(内核提供的 POSIX、LSB 等之外)库或接口(interface),除了监视器的设备驱动程序之外没有额外的假设。

实际上,我正在寻找的是有关如何编写程序的信息,该程序最终会通过 VGA 端口和电缆将信号发送到显示器,从而将屏幕的特定部分染成红色。

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

最佳答案

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

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

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

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

NVidia 和 ATI 专有的闭源图形驱动程序仅设计用于 X。因此,对于那些要使用 GPU 的用户,您必须使用 X。就是这样。

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

关于c++ - GNU/Linux 中 "drawing"抽象的绝对最低级别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18490862/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com