それが唯一の可能な方法であるかどうかはわかりませんが、画面の任意の場所に1つのピクセルを配置するためには、フレームバッファーと呼ばれる場所に何かを書き込む必要があることを読みました。だから、この場所に入って何かを書いて、画面のどこかに単一のピクセルを表示することができるなら、私は興味を持ちました。
それが唯一の可能な方法であるかどうかはわかりませんが、画面の任意の場所に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オフセットのバイト値(青-緑-赤-アルファ)を変更して、画面にピクセルを書き込みます。
または、ライナーピクセルを1回描画します(幅が1024の場合、x:y = 200:100の黄色):
printf "\x00\xFF\xFF\x00" | dd bs=4 seek=$((100 * 1024 + 200)) >/dev/fb0
更新:このコードは、フレームバッファを使用するようにXを設定するだけで、Xサーバー内でも機能します。/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を開き、それをmmapしてポインターを取得します。Xをまったく使用しませんが、Xを喜んで無視します。画面上の何かです。
ああ、コマンドラインから、/ dev / fb0に書き込むことができます。ただし、オフセット0で書き込むものはすべて左上隅にあるため、すぐに画面からスクロールします。Bashでforループを実行し、数千回書くことができます。または、/ dev / urandomを使用します。特にXを使用しているときに、スクリーンバッファの内容を破壊することは大したことではありません。ウィンドウを領域Xにドラッグするとすぐに、exposeイベントが発生し、再描画されます。回復するために力を殺す必要はありません。