Linux
是否可以訪問幀緩衝區以便從命令行將像素放在螢幕上?
我不確定這是否是唯一可能的方法,但我讀到了,為了將單個像素放在螢幕上您選擇的位置,必須將一些東西寫入一個稱為幀緩衝區的地方。所以我開始好奇,是否有可能進入這個地方並在其中寫入一些東西以便在螢幕上的某處顯示單個像素。
是的,在 X-server 之外,在 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
其中函式“像素”應該是一個答案…通過更改設備 /dev/fbX 的 xy 偏移量上的字節值(藍-綠-紅-alpha)將像素寫入螢幕,設備 /dev/fbX 是影片卡的幀緩衝區。
或嘗試一個線性像素繪製(x:y=200:100 上的黃色,如果寬度為 1024):
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