我不确定这是否是唯一可行的方法,但我读到为了将单个像素放到屏幕上您选择的位置,必须将某些内容写入帧缓冲中。所以我很好奇,如果可以进入这个地方并在其中写一些东西,以便在屏幕上的某个地方显示单个像素。
我不确定这是否是唯一可行的方法,但我读到为了将单个像素放到屏幕上您选择的位置,必须将某些内容写入帧缓冲中。所以我很好奇,如果可以进入这个地方并在其中写一些东西,以便在屏幕上的某个地方显示单个像素。
Answers:
是的,在X服务器之外,在tty中,请尝试命令:
cat /dev/urandom >/dev/fb0
如果全彩色像素填满了屏幕,则设置就可以了,您可以尝试使用以下小脚本进行播放:
#!/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
函数'pixel'应该是答案...通过更改设备/ dev / fbX的xy偏移量(视频卡的帧缓冲区)的字节值(蓝绿色-红色-alpha),将像素写到屏幕上。
或尝试进行一次线性像素绘制(如果宽度为1024,则在x:y = 200:100上呈黄色):
printf "\x00\xFF\xFF\x00" | dd bs=4 seek=$((100 * 1024 + 200)) >/dev/fb0
更新:如果我们仅将X配置为使用frame buffer,则此代码甚至在X-server内部也可以使用。通过在/usr/share/X11/xorg.conf.d/99-fbdev.conf中指定fb0
dd
特定原因,后续命令通常使用“磁盘销毁”命令...除非您知道自己在做什么,否则不要靠近这些命令...
/dev/fbX
,这/dev/fd
只是一个错字。是的,dd
很危险,但也是如此rm
。这并不意味着不应该使用它。这只是意味着应谨慎使用。
/dev/fb0
更有道理啊!大家都知道这rm
是什么意思,但是dd
有点晦涩,仍然认为它应该带有健康警告。
我今天早上刚刚发布,仍在调查为什么它仅适用于Raspberry Pi。 https://www.raspberrypi.org/forums/viewtopic.php?f=72&t=213964&p=1428891#p1428891
打开/ dev / fb0,对其进行映射,这样您就可以获得一个指针,并且速度更快。完全不使用X,但是它会愉快地忽略X,它只是屏幕上的东西。
哦,从命令行开始,您可以写到/ dev / fb0。但是,无论您在偏移量0处书写的内容都将位于左上角,因此它将立即滚动出屏幕。您可以在Bash中执行for循环并编写数千次。或使用/ dev / urandom。销毁屏幕缓冲区中的内容,尤其是当您使用X时,没什么大不了的。在区域上拖动窗口后,X会立即导致事件暴露并重新绘制。您不需要杀死恢复的力量。