コマンドラインから画面にピクセルを配置するためにフレームバッファにアクセスできますか?

コマンドラインから画面にピクセルを配置するためにフレームバッファにアクセスできますか?

これが唯一の可能な方法であるかどうかはわかりませんが、画面上の目的の場所に単一のピクセルを配置するには、フレームバッファというものに何かを書く必要があることを読んでいます。だから、ここに行って何かを書いて、画面のどこかに単一のピクセルを表示することが可能かどうか疑問に思います。

答え1

はい、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オフセットでバイト値(青 - 緑 - 赤 - アルファ)を​​変更して画面にピクセルを書き込みます。

または、線形ピクセルを描画してみてください(幅が1024の場合はx:y = 200:100に黄色)。

printf "\x00\xFF\xFF\x00" | dd bs=4 seek=$((100 * 1024 + 200)) >/dev/fb0

修正する:このコードはX-serverの内部でも機能します。フレームバッファを使用するようにXを設定する。 /usr/share/X11/xorg.conf.d/99-fbdev.conf に fb0 を指定して

答え2

今朝この記事を投稿しましたが、なぜRaspberry Piでのみ機能するのかを調査中です。 https://www.raspberrypi.org/forums/viewtopic.php?f=72&t=213964&p=1428891#p1428891

/dev/fb0 を開いて mmap するとポインタが得られ、はるかに高速です。 Xはまったく使用しませんが、Xを無視して画面に表示される内容のみが表示されます。

ああ、コマンドラインで/dev/fb0に書き込むことができるという意味です。ただし、オフセット0に書き込んだ内容は左上にあるため、画面右にスクロールします。 Bashでforループを実行し、何千回も書くことができます。または/dev/urandomを使用してください。特にXを使用する場合、画面バッファの内容を破壊することは大きな問題ではありません。領域Xの上にウィンドウをドラッグすると、露出イベントが発生して再描画されます。力を回復するために殺す必要はありません。

関連情報