注意書き

本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

Android Studio + Emulator で OpenGL ES アプリを動かす方法

プログラミング

2022年現在において、 Android Studio に付属する Android Emulator で OpenGL ES 2.0を使用したものであっても動作するようになっています。昔はエミュレーター上で、そのようなアプリを動かすことができず、Android 実機がどうしても必要になっていましたが、便利な時代になったものです。

しかしながら、動作できるといっても動かすまでに多少苦労した点があったので、半分は自分のメモですが公開しておきたいと思います。

スポンサーリンク

動作環境・前提条件など

Windows11 の環境で、 VMware Workstation や Docker Desktop を普段から使用している状況です。そのため、仮想化支援の機能が普段から有効状態となっています。このあたりについては、読み手の皆さんとは違うポイントになるかもしれません。

そのような状況なので Intel HAXM は使用できず、以下に示す Windows の機能で、各機能の有効化を行い使用しています。

  • Windows ハイパーバイザープラットフォーム
  • 仮想マシン プラットフォーム

使用した Android Studio は 2021.3.1 Patch1 でした。

設定前の状態

Android Studio で、Game Activity (C++) を使用したサンプルプロジェクトを作り、エミュレーターで実行してみたときのものが以下の通りです。これは、OpenGL ES のコンテキスト生成に失敗しており、OpenGL の情報を出そうとしてクラッシュしてしまっている、という状況です。

エミュレータの設定では、GPU 有効で Graphics : automatic に設定してあります。私の環境ではそれでも上記のようにうまく動作しない状況でした。

設定を変更する

エミュレーターの設定で、 OpenGL ES API level が Autoselect になっている箇所を、Renderer maximum (up to OpenGL ES 3.1) を選択することで、サンプルコードの実行でもエラーが発生しないようになります。

この画面はエミュレーターが起動した後の Emulator のビューで、 “…” のボタンを押すことで開くことができます。

この設定を変えた後は、エミュレーターを再起動してください。また、1度設定すれば次回以降も大丈夫のようで、設定が必要なのは初回のみです。

まとめ

OpenGL ES 3.x のコンテキストを生成するから、エミュレーターではまだ実行できないと考え、 少し前は Angle (DirectX11) による動作を指定していました。こちらでも動作するようになります。しかし、 renderer 側の設定は autodetect based on host のままにしておくほうが、都合がよい場面もあります。それでも実機と同じような実行パフォーマンスは期待してはいけませんが。

エミュレーターで OpenGL ES 3.x が動かないから諦めている人に、今回の記事が役立ってくれれば幸いです。

コメント

タイトルとURLをコピーしました