Libgdx には OpenGL ES 2.0 と 3.0 に直接アクセスするためのインタフェースがあります( LibGDX 0.9.9 やそれより前のバージョンを使用している場合は、 1.0 と 1.x が使用できます)。 デスクトップ上ではOpenGL ESの機能をデスクトップOpenGL の機能に紐付けることで、OpenGL ESのエミュレートが行われます。 いくつかのプラットフォーム (iOS, GWT/HTML) では、 OpenGL ES 2.0 のみをサポートしています。
注意: Android環境にて、アプリケーションの機能上OpenGL ES 2 が必要な場合は、 Android マニフェストファイルに以下を追加してください: <uses-feature android:glEsVersion="0x00020000" android:required="true" />
アプリケーションで OpenGL ES 3が必要な場合は、マニフェストファイルに以下を追加してください:
<uses-feature android:glEsVersion="0x00030000" android:required="true" />
こうすることで、Play Store (旧Android マーケット)内ではサポートしていない端末にあなたのアプリケーションが表示させないようにすることができます。
OpenGL ES 2.0 では、attribute変数とuniform変数とローカル変数に精度修飾子を設定する必要があります。 しかしデスクトップ環境の OpenGL では精度修飾子をサポートしていません。 この差異を防ぐために、フラグメントシェーダー内で以下のようなコードを記述する必要があります:
#ifdef GL_ES #define LOW lowp #define MED mediump #define HIGH highp precision mediump float; #else #define MED #define LOW #define HIGH #endif
上記では OpenGL ESの精度修飾子と同等のLOWP・MED・HIGH のマクロを定義し、float の既定の精度をmediumと設定しています。 この設定は実際にOpenGL ESが動作しているプラットフォーム上でのみ発生し、デスクトップ環境ではマクロは空定義がされます。