Ubuntuで EGL使えるか?


先日NVIDIAのドライバをインストールした Ubuntu ですが、なんとEGLやGLES2についてのライブラリをもっているようでした。(331.20ではダメだった・・・)

これは X 上で EGL & GLES2が使えるんじゃないかと思い試してみることにしました。

まずXのヘッダやライブラリをインストールします.
$ sudo apt-get install xorg-dev

/usr/include/features.h:324:26: 致命的エラー: bits/predefs.h: そのようなファイルやディレクトリはありません

32bitビルドする際には上記のようなエラーメッセージが出てしまうので、libc6-dev-i386 パッケージをインストールして対応します。またC++の標準ライブラリについても同様にエラーが生じてしまうのでこちらは g++-multilib をインストールして対応します。

作成したプログラムは以下のようなものです。サンプルなのですごく適当です。
まずはGLXというかウィンドウ生成部分についてです。

EGLの初期化部分はこんな感じです。

メインループとなっているGLの描画部分とリソース生成部分はこんな感じ。

これらを動かしてみてスクリーンショットをとったのが以下の図です。
無事にEGL+GLES2で三角形が描画されました。ちゃんとGLES2用として動いているようで、シェーダーで precision 設定を忘れたらコンパイルが通りませんでした。

ubuntu-egl-gles2

おまけ

このソースコードのビルドには以下のオプションを設定しています。
32bitコンパイルすることを忘れないようにしましょう。

g++ -m32 -g -I/usr/include -I./ -lX11 -lEGL -lGLESv2 -L/usr/lib/i386-linux-gnu

また、Xの転送をしている場合、eglの初期化で失敗するようです。
自分の環境ではウィンドウをWindows7上のCygwin Xサーバーへ転送させるようにして処理していたのですが、これでは初期化で失敗しました。少なくともEGL使用時にはネットワークをまたぐことはできないようです(たぶん)。

まとめ

LinuxでもNVIDIAの最新ドライバをインストールすると EGL+GLES2を使用可能なことがわかりました。
ただ検索結果を見ても気付くように 32bit のものしか対応できない感じですね。今後ARM系も 64bit 化の波が来そうですし、その頃にはあわせて提供もされてくるのかな、と思いました。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする