「OpenGL ES」カテゴリーアーカイブ

Raspberry Pi で atlantis

atlantis を Raspberry Pi に移植しました。

atlantis は、OpenGL の初期の頃のデモアプリケーションで、母クジラ、子クジラ、イルカ、サメ4匹が泳ぎまわります。

atlantis
atlantis

オリジナルのソースコードは、以下からダウンロードできます。(GLUT のソースにも含まれます。)

https://www.opengl.org/archives/resources/code/samples/glut_examples/demos/demos.html

ソースのコピーライトを見ると 1993, 1994 となっているので、もう 20 年以上前ですね。

Windows 用の実行ファイルも含まれていますが、Cosmo 3D (SGI の Windows 用 OpenGL) の DLL が必要なので、動かせる環境はもうないでしょうね。そのため、Windows でも自前でビルドする必要がありそうです。

また、X のスクリーンセーバの xscreensaver-gl-extra にも改良版の atlantis が含まれています。たぶん、O2 が発売された頃にプロジェクションマッピングに対応したものがベースとなっていると思います。

オリジナルは GLUT + OpenGL ですが、Raspberry Pi で動かすために、SDL2 + OpenGL ES 1.1 に書き換えました。Raspberry Pi2 なら、そこそこ動きます。

よく見るとクジラのポリゴンが裏返っているようです。

ということで、クジラのポリゴンをキー入力で裏返す機能も付けました。

以下は、クジラのポリゴンを裏返して正しい表示にしたものです。

atlantis002
atlantis002
atlantis003
atlantis003
atlantis004
atlantis004
atlantis005
atlantis005

 

Raspberry Pi でスクリーンショット

はじめに

Raspberry Pi でスクリーンショット(画面のスナップショット)を撮るツールはいろいろありますが、raspi2png は、起動画面の他、OpenGL ES, OpenVG 等の GPU 描画画面のスクリーンショットも撮ることができます。もちろん X の画面も。

snapshot
起動画面のスクリーンショット
OpenVG のスクリーンショット
OpenVG のスクリーンショット

公式サイト

raspi2png

raspi2png

raspi2png の公式サイトです。ここから raspi2png のソースを取得することができます。

インストール方法

$ sudo apt-get install libpng12-dev
$ wget https://github.com/AndrewFromMelbourne/raspi2png/archive/master.zip
$ unzip master.zip
$ cd raspi2png-master
$ make
$ sudo cp raspi2png /usr/local/bin

 

  • raspi2png はソースからビルドする必要があります。
  • raspi2png は libpng12-dev に依存するため、予めインストールしておく必要があります。
  • make install には対応していないため、ビルドしてできた raspi2png は手動で /usr/local/bin にコピーします。

 

実行方法

Usage: raspi2png [--pngname name] [--width <width>] [--height <height>] [--compression <level>] [--delay <delay>] [--display <number>] [--stdout] [--help]

    --pngname,-p - name of png file to create (default is snapshot.png)
    --height,-h - image height (default is screen height)
    --width,-w - image width (default is screen width)
    --compression,-c - PNG compression level (0 - 9)
    --delay,-d - delay in seconds (default 0)
    --display,-D - Raspberry Pi display number (default 0)
    --stdout,-s - write file to stdout
    --help,-H - print this usage information

 

実行例

$ raspi2png

スクリーンショットを snapshot.png というファイル名でカレントディレクトに保存します。

$ raspi2png --pngname filename.png

–pngname オプションで保存するファイル名を指定します。

$ raspi2png --delay 5

–delay オプションでコマンド実行後、5 秒後にスクリーンショットを撮ります。

 

Raspberry Pi のサンプル

サンプル

Raspberry Pi のサンプル プログラムのソースコードは、/opt/vc/src/hello_pi/ に入っています。

これらのサンプルは、VideoCore を使ったもので、コンソールで動作します。(X11 アプリケーションではありません。)

ビルド方法

# cd /opt/vc/src/hello_pi
# sh rebuild.sh

 

サンプルの中からいくつか紹介します。

 

hello_triangle

OpenGL ES 1.1 のサンプル。

実行方法

# cd /opt/vc/src/hello_pi/hello_triangle
# ./hello_triangle.bin

 

 

hello_triangle2

triange2

OpenGL ES 2.0 のマンデルブローのサンプル。

実行方法

# cd /opt/vc/src/hello_pi/hello_triangle2
# ./hello_triangle2.bin

hello_teapot

OpenGL ES 1.1 のサンプル。

実行方法

# cd /opt/vc/src/hello_pi/hello_teapot
# ./hello_teapot.bin

 

hello_videocube

OpenGL ES 1.1 のサンプル。

実行方法

# cd /opt/vc/src/hello_pi/hello_videocube
# ./hello_videocube.bin

 

hello_tiger

OpenVG のサンプルです。

実行方法

# cd /opt/vc/src/hello_pi/hello_tiger
# ./hello_tiger.bin