GLES Shader Testing in Desktop (日本語)

シェーダをモバイル機器へ対応させるための記事を書くことは些細なこととして片づけられるものではありません。モバイル機器の実機を使わずにモバイル機器用のシェーダを検証できるのか疑問を抱くことでしょう。

もちろんできます。方法があります。

統合型を含む最近の GPU は OpenGLES コンテキストの生成に対応しており、シェーダは必ず GLSLES/ESSL と互換性があります。 LÖVE で OpenGLES コンテキストを使えるようにするには環境変数 LOVE_GRAPHICS_USE_OPENGLES=1 を設定します。

動作要件

OpenGLES コンテキストの生成に対応した GPU が必要です。前述のとおり、最近のデスクトップ GPU では対応済みです。

対応していない GPU の場合は、 ANGLE が使える可能性があります。 Windows において、DirectX 9 のみに対応した GPU であっても ANGLE を使うことで LÖVE を実行できます (Google Chrome または Firefox のインストールからlibegl.dlllibopenglesv2.dll の共有ライブラリを取得できます。 32-bit 版の LÖVE をお使いならば 32-bit 版の DLL であることを確認してください (64-bit 版でも同様)。確認後、DLLを love.exe と同じディレクトリに保存してください)。

LÖVE における OpenGLES コンテキストの有効化

さて、OpenGLES コンテキストを有効化しましょう。そのためには LÖVE の起動前に環境変数を設定します。コマンドプロンプト、またはターミナルで設定後に、同じウィンドウで LÖVE を起動します。また Windows ではコントロールパネル→システム環境変数の編集から設定できます。

  • Windows: set LOVE_GRAPHICS_USE_OPENGLES=1 を実行後に lovec ... (これは 0.10.2 を使用していると仮定しています)
  • Linux/macOS: LOVE_GRAPHICS_USE_OPENGLES=1 love ...

LÖVE で OpenGLES コンテキストが使われているか確認するには love.graphics.getRendererInfo を呼び出します。そして第一返値が "OpenGL ES" であるかどうかで判断してください。

これにより OpenGLES コンテキストを得た後は、シェーダのコードがモバイル機器で動作するか検証できます。