opengl:glesemulator
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| opengl:glesemulator [2015/01/26 00:09] – [Mesa 3D] oga | opengl:glesemulator [2015/06/24 16:18] (現在) – [OpenGL の GL ES Compatibility] oga | ||
|---|---|---|---|
| 行 45: | 行 45: | ||
| 対象の GPU 機能を再現することが目的です。 | 対象の GPU 機能を再現することが目的です。 | ||
| そのため対象ハード相当の機能が再現されており、PVRTC や ATITC など固有の専用テクスチャも読み込める点が特徴です。 | そのため対象ハード相当の機能が再現されており、PVRTC や ATITC など固有の専用テクスチャも読み込める点が特徴です。 | ||
| - | 例えば ASTC 対応 GPU はまだ入手できる状態にありませんが、Mali の Emulator を使えば ASTC をロードすることができます。 | + | 例えば ASTC 対応 GPU がなかった時代でも Emulator |
| 逆に GPU に無い機能は disable されているため、他の OpenGL ES 環境よりも使える機能に制限がかかることがあります。 | 逆に GPU に無い機能は disable されているため、他の OpenGL ES 環境よりも使える機能に制限がかかることがあります。 | ||
| 行 52: | 行 52: | ||
| HOST PC 側のビデオカード (GPU) の影響を受けるため、必ずしもどの環境でも安定して動作するとは限りません。 | HOST PC 側のビデオカード (GPU) の影響を受けるため、必ずしもどの環境でも安定して動作するとは限りません。 | ||
| GPU の種類だけでなくドライバのバージョンによって相性問題が生じるので、安定動作を望むならある程度の試行錯誤が必要です。 | GPU の種類だけでなくドライバのバージョンによって相性問題が生じるので、安定動作を望むならある程度の試行錯誤が必要です。 | ||
| + | すべての Emulator が安定して動く環境を探すのは意外に困難です。 | ||
| 開発用なので、アプリケーションにそのまま組み込んで利用することはできません。 | 開発用なので、アプリケーションにそのまま組み込んで利用することはできません。 | ||
| - | |||
| - | |||
| 行 82: | 行 81: | ||
| Tegra 2/3/4 は OpenGL ES 3.0 をサポートしないこともあり、更新が止まっているようです。 | Tegra 2/3/4 は OpenGL ES 3.0 をサポートしないこともあり、更新が止まっているようです。 | ||
| 次の Tegra K1 は OpenGL 4.4 をサポートすると言われており、Emulation する必要がなくなりました。 | 次の Tegra K1 は OpenGL 4.4 をサポートすると言われており、Emulation する必要がなくなりました。 | ||
| - | |||
| - | |||
| - | ====== Angle Project ====== | ||
| - | |||
| - | Windows の Direct3D 9/11 上に OpenGL ES 2.0 を実装したライブラリです。 | ||
| - | OpenGL のドライバがなくても動作できることが特徴となります。 | ||
| - | |||
| - | * [[https:// | ||
| - | |||
| - | 例えば 旧 Atom の Z シリーズ (GMA500~ PowerVR SGX 搭載) には OpenGL のドライバがありませんでした。 | ||
| - | Angle Project のライブラリを用いることで、OpenGL ES 2.0 用プログラムを実行できるようになります。 | ||
| - | (VAIO type P , Windows 7 x86 で確認) | ||
| - | |||
| - | 使い方は前述の GPU Emulator と全く同じで、libEGL や libGLESv2 を使うだけです。 | ||
| - | lib 名や呼び出し規約が同一なので、他の GPU Emulator と入れ替えて使用できます。 | ||
| - | |||
| - | **注意**: build 時に copy される d3dcompiler_46.dll も必要です。eglInitialize() が失敗する場合は d3dcompiler_46.dll が存在していない可能性があります。 | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | build 手順 (VisualStudio 2010~) | ||
| - | |||
| - | - git でソースを clone | ||
| - | - projects/ | ||
| - | - build | ||
| - | |||
| - | そのままだと D3D9 ベースの 32bit 版が作られます。 | ||
| - | 64bit ライブラリを build するには下記の手順が必要です。(2014/ | ||
| - | |||
| - | - Configuration Manager で platform に x64 を追加する。(win32 を元にして新規に作る) | ||
| - | - libEGL / libGLESv2 の Property を開く | ||
| - | - x64 の Linker → General → Additional Library Directories を開く | ||
| - | - path を「~/ | ||
| - | |||
| - | Direct3D 11 を有効にするにはソース内の define を変更します。 | ||
| - | |||
| - | * src/ | ||
| - | |||
| - | この場合 HOST PC が D3D11 対応の場合は D3D11 を利用し、対応していない場合は D3D9 が用いられます。 | ||
| - | |||
| - | ↓Direct3D 9 で走らせた場合 | ||
| - | |||
| - | < | ||
| - | GL_VERSION: OpenGL ES 2.0 (ANGLE 1.3.d70707b435ef) | ||
| - | GL_RENDERER: | ||
| - | GL_VENDOR: Google Inc. | ||
| - | GL_SHADING_LANGUAGE_VERSION: | ||
| - | </ | ||
| - | |||
| - | ↓Direct3D 11 の場合 | ||
| - | |||
| - | < | ||
| - | GL_VERSION: OpenGL ES 2.0 (ANGLE 1.3.d70707b435ef) | ||
| - | GL_RENDERER: | ||
| - | GL_VENDOR: Google Inc. | ||
| - | GL_SHADING_LANGUAGE_VERSION: | ||
| - | </ | ||
| - | |||
| - | |||
| - | Direct3D 11 で動作可能になったことで、現在 OpenGL ES 3.0 への対応も進められているようです。 | ||
| - | |||
| - | |||
| - | |||
| 行 156: | 行 91: | ||
| OpenGL 4.x には OpenGL ES 互換モードが搭載されています。以下各 GPU の対応状況。 (いずれも D3D11 世代の GPU のみ) | OpenGL 4.x には OpenGL ES 互換モードが搭載されています。以下各 GPU の対応状況。 (いずれも D3D11 世代の GPU のみ) | ||
| - | |||
| 行 162: | 行 96: | ||
| ^ GPU ^ OpenGL API ^ ES2 Compatibility | ^ GPU ^ OpenGL API ^ ES2 Compatibility | ||
| | GeForce | | GeForce | ||
| - | | RADEON | + | | RADEON |
| - | | Intel HD Graphics | + | | Intel HD Graphics |
| + | |||
| + | * Context = EXT_create_context_es2_profile 等 | ||
| + | |||
| + | EGL ではなく WGL や GLX 等の Native API を使いますがそれ以外の API は共通です。 | ||
| + | 安定して動くので、Mobile との共通アプリケーションを走らせる場合に有効です。 | ||
| - | * Context = EXT_create_context_es2_profile | ||
| 行 221: | 行 160: | ||
| </ | </ | ||
| - | 2015/01/02 現在対応しているのは | + | * 2015/02 GeForce では必ずしも上記のように VERSION 3.1 を指定する必要がないようです。Android 同様に ES 2.0 Context を作っても ES 3.1 Context を返します。OpenGL 4.5 以上であれば Linux でも OpenGL ES 3.1 を使用できます。 |
| - | Android 同様に ES 2.0 Context を作っても ES 3.1 Context を返します。 | + | |
| - | OpenGL 4.5 以上であれば Linux でも OpenGL ES 3.1 を使用できます。 | + | |
| - | + | ||
| - | また GeForce の場合は Android の Tegra K1 同様に、OpenGL ES 3.1 AEP (GL_ANDROID_extension_pack_es31a) に対応しています。 | + | |
| + | * 2015/06 Intel HD Graphics (Ivy Bridge/ | ||
| 行 308: | 行 244: | ||
| define symbol GL_ES が定義されているので、RADEON の方法よりも互換性が高いといえるでしょう。 | define symbol GL_ES が定義されているので、RADEON の方法よりも互換性が高いといえるでしょう。 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== Angle Project ====== | ||
| + | |||
| + | Windows の Direct3D 9/11 上に OpenGL ES 2.0 を実装したライブラリです。 | ||
| + | OpenGL のドライバがなくても動作できることが特徴となります。 | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | 例えば 旧 Atom の Z シリーズ (GMA500~ PowerVR SGX 搭載) には OpenGL のドライバがありませんでした。 | ||
| + | Angle Project のライブラリを用いることで、OpenGL ES 2.0 用プログラムを実行できるようになります。 | ||
| + | (VAIO type P , Windows 7 x86 で確認) | ||
| + | |||
| + | 使い方は前述の GPU Emulator と全く同じで、libEGL や libGLESv2 を使うだけです。 | ||
| + | lib 名や呼び出し規約が同一なので、他の GPU Emulator と入れ替えて使用できます。 | ||
| + | |||
| + | **注意**: build 時に copy される d3dcompiler_46.dll も必要です。eglInitialize() が失敗する場合は d3dcompiler_46.dll が存在していない可能性があります。 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | build 手順 (VisualStudio 2010~) | ||
| + | |||
| + | - git でソースを clone | ||
| + | - projects/ | ||
| + | - build | ||
| + | |||
| + | そのままだと D3D9 ベースの 32bit 版が作られます。 | ||
| + | 64bit ライブラリを build するには下記の手順が必要です。(2014/ | ||
| + | |||
| + | - Configuration Manager で platform に x64 を追加する。(win32 を元にして新規に作る) | ||
| + | - libEGL / libGLESv2 の Property を開く | ||
| + | - x64 の Linker → General → Additional Library Directories を開く | ||
| + | - path を「~/ | ||
| + | |||
| + | Direct3D 11 を有効にするにはソース内の define を変更します。 | ||
| + | |||
| + | * src/ | ||
| + | |||
| + | この場合 HOST PC が D3D11 対応の場合は D3D11 を利用し、対応していない場合は D3D9 が用いられます。 | ||
| + | |||
| + | ↓Direct3D 9 で走らせた場合 | ||
| + | |||
| + | < | ||
| + | GL_VERSION: OpenGL ES 2.0 (ANGLE 1.3.d70707b435ef) | ||
| + | GL_RENDERER: | ||
| + | GL_VENDOR: Google Inc. | ||
| + | GL_SHADING_LANGUAGE_VERSION: | ||
| + | </ | ||
| + | |||
| + | ↓Direct3D 11 の場合 | ||
| + | |||
| + | < | ||
| + | GL_VERSION: OpenGL ES 2.0 (ANGLE 1.3.d70707b435ef) | ||
| + | GL_RENDERER: | ||
| + | GL_VENDOR: Google Inc. | ||
| + | GL_SHADING_LANGUAGE_VERSION: | ||
| + | </ | ||
| + | |||
| + | |||
| + | Direct3D 11 で動作可能になったことで、現在 OpenGL ES 3.0 への対応も進められているようです。 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== Mesa 3D ====== | ||
| + | |||
| + | Ubuntu の場合の install 方法 | ||
| + | |||
| + | < | ||
| + | $ sudo apt-get install libgl1-mesa-dev libgles2-mesa-dev mesa-utils-extra | ||
| + | </ | ||
| + | |||
| + | OpenGL ES 2.0 / 3.0 API を利用できます。 | ||
| + | ES 3.0 が使えるかどうかは HOST GPU/ | ||
| + | 対応しているバージョンを調べるには、mesa-utils-extra に含まれている es2_info コマンドを使います。 | ||
| + | ただし llvmpipe はソフトウエアレンダラ。 | ||
| + | |||
| + | < | ||
| + | // Ubuntu 14.04 : VMware Player | ||
| + | EGL_CLIENT_APIS: | ||
| + | GL_VERSION: OpenGL ES 2.0 Mesa 10.1.0 | ||
| + | GL_RENDERER: | ||
| + | |||
| + | // Ubuntu 14.04 : RADEON HD 6750M | ||
| + | EGL_CLIENT_APIS: | ||
| + | GL_VERSION: OpenGL ES 3.0 Mesa 10.1.0 | ||
| + | GL_RENDERER: | ||
| + | |||
| + | // Ubuntu 14.04 : Intel HD 4000 | ||
| + | EGL_CLIENT_APIS: | ||
| + | GL_VERSION: OpenGL ES 3.0 Mesa 10.1.0 | ||
| + | GL_RENDERER: | ||
| + | GL_EXTENSIONS: | ||
| + | </ | ||
| + | |||
| + | es2_info コマンドは | ||
| + | Nexus 7 (2012) 上の Ubuntu 13.04 desktop など、ARM ベースの Linux 上でも使えます。 | ||
| + | |||
| + | ライブラリは libEGL / libGLESv2 をリンクします。 | ||
| + | |||
| + | < | ||
| + | FLB_LIBFLAGS= -lm -lEGL -lGLESv2 -lX11 | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
opengl/glesemulator.1422198566.txt.gz · 最終更新: by oga
