그것이 가능한 유일한 방법인지는 확실하지 않지만 원하는 위치에서 화면에 단일 픽셀을 넣으려면 프레임 버퍼라는 장소에 무언가를 써야한다는 것을 읽었습니다. 그래서 화면에 어딘가에 단일 픽셀을 표시하기 위해 이곳에 들어가서 무언가를 쓸 수 있다면 궁금해졌습니다.
그것이 가능한 유일한 방법인지는 확실하지 않지만 원하는 위치에서 화면에 단일 픽셀을 넣으려면 프레임 버퍼라는 장소에 무언가를 써야한다는 것을 읽었습니다. 그래서 화면에 어딘가에 단일 픽셀을 표시하기 위해 이곳에 들어가서 무언가를 쓸 수 있다면 궁금해졌습니다.
답변:
예, X 서버 외부의 tty에서 다음 명령을 시도하십시오.
cat /dev/urandom >/dev/fb0
colourfull pixels이 화면을 가득 채우면 설정이 정상이며 다음과 같은 작은 스크립트로 재생할 수 있습니다.
#!/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가 프레임 버퍼를 사용하도록 구성 하면 X 서버 내부에서도 작동 합니다 . /usr/share/X11/xorg.conf.d/99-fbdev.conf 안에 fb0을 지정하여
dd
특정 이유로 인해 종종 "디스크 파괴"라고 불린 후속 명령 사용 ... 수행중인 작업을 알지 못하면 이러한 명령 근처에 가지 마십시오.
/dev/fbX
와는 /dev/fd
단지 오타했다. 그리고 그렇습니다 . dd
그러나 위험 rm
합니다. 그렇다고 사용해서는 안된다는 의미는 아닙니다. 그것은주의해서 사용해야한다는 것을 의미합니다.
/dev/fb0
더 이해가된다! 모두가 무슨 rm
뜻 인지 알지만 dd
조금 더 애매 하지만 여전히 건강 경고를해야한다고 생각합니다.
오늘 아침에 오늘 게시했는데 왜 여전히 라즈베리 파이에서만 작동하는지 조사 중입니다. 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 위로 창을 드래그하자마자 노출 이벤트가 발생하고 다시 그립니다. 당신은 복구하기 위해 힘을 죽일 필요가 없습니다.