2017/08/30(水) [n年前の日記]
#1 [raspberrypi] Raspberry Pi3 に mesa-utils-extraをインストールしてみた
Linux の場合、OpenGLの動作確認ができるパッケージとして mesa-utils があって。
例えば Raspberry Pi3 (Raspbian)の場合、以下でインストールができる。というか最初から入ってる。
実行は以下。
それらと似た感じで、 _OpenGL ES について動作確認できる、mesa-utils-extra というパッケージがあるようで。OpenGL ES てのは…OpenGLから機能を削って組み込み用途向けにしたもの、という説明でいいのだろうか。スマートフォン等で使われてるらしいけど。
インストールは以下。
ということで Raspberry Pi3上で mesa-utils-extra をインストールして動作確認してみたのだけど。
どうやら OpenGL と同様に、sudo raspi-config で OpenGLを有効(GL driverを有効)にしないと、正常表示されないようで。デフォルト状態では色がおかしかったり、形がおかしかったり。OpenGL ES ならすんなり描画できるのかなと期待したけど、甘かった…。
例えば Raspberry Pi3 (Raspbian)の場合、以下でインストールができる。というか最初から入ってる。
sudo apt install mesa-utils
実行は以下。
glxgears glxinfoglxgears で、ギアが3つ表示されてFPSが出力される。glxinfo で、OpenGL の実装状況(?)が確認できる。
それらと似た感じで、 _OpenGL ES について動作確認できる、mesa-utils-extra というパッケージがあるようで。OpenGL ES てのは…OpenGLから機能を削って組み込み用途向けにしたもの、という説明でいいのだろうか。スマートフォン等で使われてるらしいけど。
インストールは以下。
sudo apt install mesa-utils-extra
es2gears es2_infoes2gears で、ギアが3つ表示されてFPSが出力される。es2_info で、OpenGL ES の実装状況が確認できる。
ということで Raspberry Pi3上で mesa-utils-extra をインストールして動作確認してみたのだけど。
どうやら OpenGL と同様に、sudo raspi-config で OpenGLを有効(GL driverを有効)にしないと、正常表示されないようで。デフォルト状態では色がおかしかったり、形がおかしかったり。OpenGL ES ならすんなり描画できるのかなと期待したけど、甘かった…。
[ ツッコむ ]
#2 [raspberrypi] Raspberry Pi3上でpygameのスクリプトを動かしてみた
Raspberry Pi3上でpygameを動かしたら、実はそこそこの速度で動いちゃったりしないのかな、と疑問が湧いてきたので試しに動かしてみたり。
スクリプトソースや画像は以下。
_pygame_fullscreen_py.zip
処理内容は…。640x480の画面で、64x64ドットのスプライト x 160枚 + BG x 2枚を描画しつつ、ogg再生をするスクリプト。
結果は…。OpenGLドライバを無効化した状態で40FPS前後、OpenGLドライバを有効化した状態で17FPS前後しか出なかった。やっぱり pygame は遅い。
いやまあ、何もしなくても ―― ソフトウェアによる描画処理だけでも40FPSも出るのか、という捉え方もありそうだけど…。60FPSなんて贅沢(?)を言わず30FPS決め打ちで動かせばそこそこソレっぽくはなるかも、てな気持ちになろうと思えばなれなくもないというか。
ホントか嘘かは知らないけど昔のSEGAのゲームは30FPSで動かしてたという話をどこかで聞いた記憶もあるし。PS1のリッジレーサーだって最初は30FPSだったし。自分がガラケー用のゲームを作ってた頃は10FPS程度で動かしていたしで。30FPSでも一応リアルタイム2Dゲームっぽいものを作れなくはないかもな、みたいな。
でも、Ruby + gosu なら60FPSで動くのだから、わざわざ Python + ○○を使って描画が遅いソレを作る意味は無いよな…。
スクリプトソースや画像は以下。
_pygame_fullscreen_py.zip
処理内容は…。640x480の画面で、64x64ドットのスプライト x 160枚 + BG x 2枚を描画しつつ、ogg再生をするスクリプト。
結果は…。OpenGLドライバを無効化した状態で40FPS前後、OpenGLドライバを有効化した状態で17FPS前後しか出なかった。やっぱり pygame は遅い。
いやまあ、何もしなくても ―― ソフトウェアによる描画処理だけでも40FPSも出るのか、という捉え方もありそうだけど…。60FPSなんて贅沢(?)を言わず30FPS決め打ちで動かせばそこそこソレっぽくはなるかも、てな気持ちになろうと思えばなれなくもないというか。
ホントか嘘かは知らないけど昔のSEGAのゲームは30FPSで動かしてたという話をどこかで聞いた記憶もあるし。PS1のリッジレーサーだって最初は30FPSだったし。自分がガラケー用のゲームを作ってた頃は10FPS程度で動かしていたしで。30FPSでも一応リアルタイム2Dゲームっぽいものを作れなくはないかもな、みたいな。
でも、Ruby + gosu なら60FPSで動くのだから、わざわざ Python + ○○を使って描画が遅いソレを作る意味は無いよな…。
[ ツッコむ ]
#3 [raspberrypi] Raspberry PiでOpenGLはあてにしないほうがいいのではないか
ふと気が付いたけど、Raspberry PiでOpenGLはあてにしないほうがいいのではないかと今頃になって思えてきたりもして。
と言うのも、メモリ容量の関係で、OpenGL を有効にできるのは Pi2 や Pi3 のみ、だったことを思い出したからで。Pi1 や Zero は、OpenGL を有効にできない…。
安いし小さいということで、お子さんに Raspberry Pi Zero を買い与えたご家庭があるかもしれんけど、そういう環境ではOpenGLを使ったアレコレは動かせないのだよな…。その場合は pygame のソフトウェア描画で作るのが精一杯、かなあ…。うーん。
_Raspberry Pi2 の X11 で OpenGL のハードウェアアクセラレート ・ その2 ・ | Raspberry Pi によると、OpenGLを有効にした場合、
このあたりが参考に…なりそうな予感…。
_Raspberry Pi メモ (7) OpenGL ES2(1) - Jun's homepage
_Raspberry Pi メモ (8) OpenGL ES2(2) - Jun's homepage
_Raspberry Pi メモ (19) - Jun's homepage
でも、40FPSしか出ない、という話も書いてあるな…。うーん。
と言うのも、メモリ容量の関係で、OpenGL を有効にできるのは Pi2 や Pi3 のみ、だったことを思い出したからで。Pi1 や Zero は、OpenGL を有効にできない…。
安いし小さいということで、お子さんに Raspberry Pi Zero を買い与えたご家庭があるかもしれんけど、そういう環境ではOpenGLを使ったアレコレは動かせないのだよな…。その場合は pygame のソフトウェア描画で作るのが精一杯、かなあ…。うーん。
_Raspberry Pi2 の X11 で OpenGL のハードウェアアクセラレート ・ その2 ・ | Raspberry Pi によると、OpenGLを有効にした場合、
Minecraft も動作しません。Minecraft は X11 上で動作するアプリケーションですが、実際にはコンソールの OpenGL ES 描画結果を X11 上にレイヤ合成しているので、OpenGL ES/OpenVG アプリケーションが動作しないのと同じ理由でしょう。とあるから…。逆に考えると OpenGL を有効にできなくても、Minecraft と同様のやり方 ―― OpenGL ES をアレすれば、ぬるぬる動かせる、ということなのかしら。いや、Pi1 や Zero 上では Minecraft がどの程度の速度で動いてるのか分からんけど。Raspberry Pi2 の X11 で OpenGL のハードウェアアクセラレート ・ その2 ・ | Raspberry Pi より
このあたりが参考に…なりそうな予感…。
_Raspberry Pi メモ (7) OpenGL ES2(1) - Jun's homepage
_Raspberry Pi メモ (8) OpenGL ES2(2) - Jun's homepage
_Raspberry Pi メモ (19) - Jun's homepage
でも、40FPSしか出ない、という話も書いてあるな…。うーん。
[ ツッコむ ]
#4 [raspberrypi] Raspberry Pi3に繋いだカメラで撮影できない
raspistill -o 01.jpg と打って撮影しようとしたら、以下のエラーが。
_Raspberry Pi カメラモジュール | an10.info
_ラズパイのカメラモジュールで[failed to open vchiq instance]エラー - Qiita
_Omxplayer - Page 2 - Raspberry Pi Forums
あるいはパーミッションを変更。
コレで撮影できるようになった。
* failed to open vchiq instanceパーミッションの問題という話が。
_Raspberry Pi カメラモジュール | an10.info
_ラズパイのカメラモジュールで[failed to open vchiq instance]エラー - Qiita
_Omxplayer - Page 2 - Raspberry Pi Forums
sudo vi /etc/udev/rules.d/10-vchiq-permissions.rules以下を追加。
SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"
sudo gpasswd -a ユーザ名 video または、 usermod -a -G video ユーザ名
あるいはパーミッションを変更。
$ ls -l /dev/ | grep vch crw------- 1 root video 246, 0 11月 4 2016 vchiq
sudo chmod a+rw /dev/vchiq
$ ls -l /dev/ | grep vch crw-rw-rw- 1 root video 246, 0 11月 4 2016 vchiq
コレで撮影できるようになった。
[ ツッコむ ]
#5 [raspberrypi] Raspberry Pi3にVNCでアクセス
raspbian stretch は RealVNC が標準でインストールされているらしい。アクセスできるか動作確認。
設定を変更してvncを有効にする。
再起動。
デスクトップ画面のタスクバー?のあたりにVNCのアイコンが表示された。
Windows10 x64 からアクセス。…今までは Raspberry Pi3 + tightvncserver に、Windows10 x64 + UltraVNC の VNC Viewer でアクセスしてたけど、何故かソレではアクセスできず。仕方ないので、RealVNC系の Viewer もインストールすることに。
_VNC (Virtual Network Computing) - Raspberry Pi Documentation
_Download VNC Viewer | RealVNC
VNC-Viewer-6.17.731-Windows.exe をDLしてインストール。
VNC Viewer を起動して、Raspberry Pi3 のIPアドレスにアクセス。Raspberry Pi3 のデスクトップ画面が表示された。
sudo apt install realvnc-vnc-server realvnc-vnc-viewer
設定を変更してvncを有効にする。
sudo raspi-config
再起動。
sudo reboot
デスクトップ画面のタスクバー?のあたりにVNCのアイコンが表示された。
Windows10 x64 からアクセス。…今までは Raspberry Pi3 + tightvncserver に、Windows10 x64 + UltraVNC の VNC Viewer でアクセスしてたけど、何故かソレではアクセスできず。仕方ないので、RealVNC系の Viewer もインストールすることに。
_VNC (Virtual Network Computing) - Raspberry Pi Documentation
_Download VNC Viewer | RealVNC
VNC-Viewer-6.17.731-Windows.exe をDLしてインストール。
VNC Viewer を起動して、Raspberry Pi3 のIPアドレスにアクセス。Raspberry Pi3 のデスクトップ画面が表示された。
[ ツッコむ ]
#6 [raspberrypi] Raspberry Pi3でOpenGL ES関係のデモプログラムを動かしてみたり
/opt/vc/src/hello_pi/ 以下に、OpenGL ES 関係のデモが入ってるらしい。
_デモプログラム − Raspberry Pi公式ドキュメントを日本語訳
_OpenGL ES on RaspberryPi | Shinya Matsuyama
各プログラムはCで書かれてるっぽい。ソースしか存在しないので、ビルドする。
各フォルダ内に、*.bin というファイルが作成された。それぞれを実行すれば色々なデモが見れる。
Raspberry Pi3 上では、どちらもかなり滑らかに動いた。しかも全画面表示。これが…Raspberry Pi3の実力…。Cで書いてOpenGL ESを使えばこのくらいの速度で動かせるよ、ということか…。
ちなみに、RealVNC Viewer でアクセスしても各デモの結果を見ることができた。RealVNC なら OpenGL ES の描画結果を表示できる、ということなのだな…。 *1
_デモプログラム − Raspberry Pi公式ドキュメントを日本語訳
_OpenGL ES on RaspberryPi | Shinya Matsuyama
cd /opt/vc/src/hello_pi/ ls -al
各プログラムはCで書かれてるっぽい。ソースしか存在しないので、ビルドする。
sudo ./rebuild.sh
各フォルダ内に、*.bin というファイルが作成された。それぞれを実行すれば色々なデモが見れる。
cd hello_triangle ./hello_triangle.bin
cd ../hello_teapot ./hello_teapot.bin
Raspberry Pi3 上では、どちらもかなり滑らかに動いた。しかも全画面表示。これが…Raspberry Pi3の実力…。Cで書いてOpenGL ESを使えばこのくらいの速度で動かせるよ、ということか…。
ちなみに、RealVNC Viewer でアクセスしても各デモの結果を見ることができた。RealVNC なら OpenGL ES の描画結果を表示できる、ということなのだな…。 *1
*1: RealVNC ではなく tightvncserver を使った場合、OpenGL関係の結果は見れない、という話をどこかで見かけた記憶があるような。
[ ツッコむ ]
以上、1 日分です。