Abd*_*red 27 linux graphics framebuffer console
我不确定这是否是唯一可能的方法,但我读到过,为了将单个像素放在屏幕上您选择的位置,必须将一些内容写入一个名为 framebuffer 的地方。所以我开始好奇,是否有可能进入这个地方并在其中写入一些东西,以便在屏幕上的某个地方显示单个像素。
Asa*_*vic 26
是的,在 X-server 之外,在 tty 中,尝试命令:
cat /dev/urandom >/dev/fb0
Run Code Online (Sandbox Code Playgroud)
如果colourfull像素填满了屏幕,那么您的设置就可以了,您可以尝试使用这个小脚本:
#!/usr/bin/env bash
fbdev=/dev/fb0 ; width=1280 ; bpp=4
color="\x00\x00\xFF\x00" #red colored
function pixel()
{ xx=$1 ; yy=$2
printf "$color" | dd bs=$bpp seek=$(($yy * $width + $xx)) \
of=$fbdev &>/dev/null
}
x=0 ; y=0 ; clear
for i in {1..500}; do
pixel $((x++)) $((y++))
done
Run Code Online (Sandbox Code Playgroud)
其中函数'像素'应该是一个答案......通过更改设备/dev/fbX(视频卡的帧缓冲区)的xy偏移上的字节值(蓝-绿-红-alpha)将像素写入屏幕。
或尝试绘制一个线性像素(x:y=200:100 上的黄色,如果宽度为 1024):
printf "\x00\xFF\xFF\x00" | dd bs=4 seek=$((100 * 1024 + 200)) >/dev/fb0
Run Code Online (Sandbox Code Playgroud)
更新:如果我们只是将 X 配置为使用 frame buffer,则此代码甚至在 X-server 中也能工作。通过在 /usr/share/X11/xorg.conf.d/99-fbdev.conf 中指定 fb0
归档时间: |
|
查看次数: |
38559 次 |
最近记录: |