ユーザ用ツール

サイト用ツール


opengl:glesemulator

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
opengl:glesemulator [2015/01/25 23:59]
oga [RADEON OpenGL ES 2.0 API]
opengl:glesemulator [2015/06/24 16:18] (現在)
oga [OpenGL の GL ES Compatibility]
行 45: 行 45:
 対象の GPU 機能を再現することが目的です。 対象の GPU 機能を再現することが目的です。
 そのため対象ハード相当の機能が再現されており、PVRTC や ATITC など固有の専用テクスチャも読み込める点が特徴です。 そのため対象ハード相当の機能が再現されており、PVRTC や ATITC など固有の専用テクスチャも読み込める点が特徴です。
-例えば ASTC 対応 GPU はまだ入手きる状態にありませんが、Mali の Emulator を使えば ASTC をロードすることができま+例えば ASTC 対応 GPU がなかった時代も Emulator 上では ASTC を使することができました
  
 逆に GPU に無い機能は disable されているため、他の OpenGL ES 環境よりも使える機能に制限がかかることがあります。 逆に GPU に無い機能は disable されているため、他の OpenGL ES 環境よりも使える機能に制限がかかることがあります。
行 52: 行 52:
 HOST PC 側のビデオカード (GPU) の影響を受けるため、必ずしもどの環境でも安定して動作するとは限りません。 HOST PC 側のビデオカード (GPU) の影響を受けるため、必ずしもどの環境でも安定して動作するとは限りません。
 GPU の種類だけでなくドライバのバージョンによって相性問題が生じるので、安定動作を望むならある程度の試行錯誤が必要です。 GPU の種類だけでなくドライバのバージョンによって相性問題が生じるので、安定動作を望むならある程度の試行錯誤が必要です。
 +すべての Emulator が安定して動く環境を探すのは意外に困難です。
  
 開発用なので、アプリケーションにそのまま組み込んで利用することはできません。 開発用なので、アプリケーションにそのまま組み込んで利用することはできません。
- 
- 
  
  
行 84: 行 83:
  
  
-====== Angle Project ====== 
  
-Windows の Direct3D 9/11 上に OpenGL ES 2.0 を実装したライブラリです。 +====== OpenGL の GL ES Compatibility ======
-OpenGL のドライバがなくても動作できることが特徴となります。+
  
-  * [[https://code.google.com/p/angleproject/|ANGLE Project]]+  * GL_ARB_ES2_compatibility 
 +  * GL_ARB_ES3_compatibility 
 +  * GL_ARB_ES3_1_compatibility
  
-例えば 旧 Atom の Z シリーズ (GMA500~ PowerVR SGX 搭載) には OpenGL ライバありませんでした。 +OpenGL 4.x には OpenGL ES 互換モードが搭載されています。以下各 GPU の対応状況。 (いずれも D3D11 世代の GPU のみ)
-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 が存在していない可能性があります。 
  
 +^ GPU                 ^ OpenGL API       ^ ES2 Compatibility  ^ ES3 Compatibility  ^ ES3_1 Compatibility   ^ ES3_1 AEP          ^ GPU                 ^
 +| GeForce             | OpenGL 4.5       | Y (Context)        | Y (Context)        | Y (Context)           | Y                  | GeForce 400~ Fermi, Kepler, Maxwell 等  |
 +| RADEON              | OpenGL 4.5       | Y                  | Y                  | Y                     | N                  | RADEON HD 5000~    |
 +| Intel HD Graphics   | OpenGL 4.0~4.3  | Y (Context)        | Y (Context)        | Y (Context)           | N                  | Intel HD Graphics 2500/4000 ~  |
  
 +  * Context = EXT_create_context_es2_profile 等
  
 +EGL ではなく WGL や GLX 等の Native API を使いますがそれ以外の API は共通です。
 +安定して動くので、Mobile との共通アプリケーションを走らせる場合に有効です。
  
-build 手順 (VisualStudio 2010~) 
  
-  - git でソースを clone 
-  - projects/src/angle.sln を開く 
-  - build 
  
-そのままだと D3D9 ベースの 32bit 版が作られます。 
-64bit ライブラリを build するには下記の手順が必要です。(2014/04/18 VisualStudio 2013 で確認) 
- 
-  - Configuration Manager で platform に x64 を追加する。(win32 を元にして新規に作る) 
-  - libEGL / libGLESv2 の Property を開く 
-  - x64 の Linker → General → Additional Library Directories を開く 
-  - path を「~/Lib/win8/um/x86」から「~/Lib/win8/um/x64」に変更 
- 
-Direct3D 11 を有効にするにはソース内の define を変更します。 
- 
-  * src/libGLESv2/renderer/Renderer.cpp 内の ANGLE_ENABLE_D3D11 を 1 にする。 
- 
-この場合 HOST PC が D3D11 対応の場合は D3D11 を利用し、対応していない場合は D3D9 が用いられます。 
- 
-↓Direct3D 9 で走らせた場合 
- 
-<code> 
-GL_VERSION: OpenGL ES 2.0 (ANGLE 1.3.d70707b435ef) 
-GL_RENDERER: ANGLE (NVIDIA GeForce GTX 650 Direct3D9Ex vs_3_0 ps_3_0) 
-GL_VENDOR: Google Inc. 
-GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.00 (ANGLE 1.3.d70707b435ef) 
-</code> 
- 
-↓Direct3D 11 の場合 
- 
-<code> 
-GL_VERSION: OpenGL ES 2.0 (ANGLE 1.3.d70707b435ef) 
-GL_RENDERER: ANGLE (NVIDIA GeForce GTX 650 Direct3D11 vs_5_0 ps_5_0) 
-GL_VENDOR: Google Inc. 
-GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.00 (ANGLE 1.3.d70707b435ef) 
-</code> 
- 
- 
-Direct3D 11 で動作可能になったことで、現在 OpenGL ES 3.0 への対応も進められているようです。 
- 
- 
- 
- 
- 
-====== Mesa 3D ====== 
- 
-Ubuntu の場合の install 方法 
- 
-<code> 
-$ sudo apt-get install libgl1-mesa-dev libgles2-mesa-dev mesa-utils-extra 
-</code> 
- 
-OpenGL ES 2.0 / 3.0 API を利用できます。  
-ES 3.0 が使えるかどうかは HOST GPU/CPU、OS 環境によって異なります。 
-対応しているバージョンを調べるには、mesa-utils-extra に含まれている es2_info コマンドを使います。 
-ただし llvmpipe はソフトウエアレンダラ。 
- 
-<code> 
-// Ubuntu 14.04 : VMware Player 
-EGL_CLIENT_APIS: OpenGL OpenGL_ES OpenGL_ES2 OpenVG  
-GL_VERSION: OpenGL ES 2.0 Mesa 10.1.0 
-GL_RENDERER: Gallium 0.4 on SVGA3D; build: RELEASE; 
- 
-// Ubuntu 14.04 : RADEON HD 6750M 
-EGL_CLIENT_APIS: OpenGL OpenGL_ES OpenGL_ES2 OpenGL_ES3  
-GL_VERSION: OpenGL ES 3.0 Mesa 10.1.0 
-GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 3.4, 256 bits) 
- 
-// Ubuntu 14.04 : Intel HD 4000 
-EGL_CLIENT_APIS: OpenGL OpenGL_ES OpenGL_ES2 OpenGL_ES3  
-GL_VERSION: OpenGL ES 3.0 Mesa 10.1.0 
-GL_RENDERER: Mesa DRI Intel(R) Ivybridge Mobile  
-GL_EXTENSIONS: 
-</code> 
- 
-es2_info コマンドは 
-Nexus 7 (2012) 上の Ubuntu 13.04 desktop など、ARM ベースの Linux 上でも使えます。 
- 
-ライブラリは libEGL / libGLESv2 をリンクします。 
- 
-<code> 
-FLB_LIBFLAGS= -lm -lEGL -lGLESv2 -lX11 
-</code> 
- 
- 
- 
-====== OpenGL の GL ES Compatibility ====== 
  
 ===== OpenGL 4.5 以上の ES31 Compatibility (GL_ARB_ES3_1_compatibility) ===== ===== OpenGL 4.5 以上の ES31 Compatibility (GL_ARB_ES3_1_compatibility) =====
行 245: 行 160:
 </code> </code>
  
-2015/01/02 現在対応しているのは GeForce だけすが、必ずしも上記のように VERSION 3.1 を指定する必要がないようです。 +  * 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 を返します。 +    また GeForce の場合は Android の Tegra K1 同様に、OpenGL ES 3.1 AEP (GL_ANDROID_extension_pack_es31a) に対応しています。
-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/BayTrail 世代以上) でも新しいドライバでは ES 3.1 Context の生成が可能です。
  
  
行 332: 行 244:
  
 define symbol GL_ES が定義されているので、RADEON の方法よりも互換性が高いといえるでしょう。 define symbol GL_ES が定義されているので、RADEON の方法よりも互換性が高いといえるでしょう。
 +
 +
 +
 +
 +
 +====== Angle Project ======
 +
 +Windows の Direct3D 9/11 上に OpenGL ES 2.0 を実装したライブラリです。
 +OpenGL のドライバがなくても動作できることが特徴となります。
 +
 +  * [[https://code.google.com/p/angleproject/|ANGLE Project]]
 +
 +例えば 旧 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/src/angle.sln を開く
 +  - build
 +
 +そのままだと D3D9 ベースの 32bit 版が作られます。
 +64bit ライブラリを build するには下記の手順が必要です。(2014/04/18 VisualStudio 2013 で確認)
 +
 +  - Configuration Manager で platform に x64 を追加する。(win32 を元にして新規に作る)
 +  - libEGL / libGLESv2 の Property を開く
 +  - x64 の Linker → General → Additional Library Directories を開く
 +  - path を「~/Lib/win8/um/x86」から「~/Lib/win8/um/x64」に変更
 +
 +Direct3D 11 を有効にするにはソース内の define を変更します。
 +
 +  * src/libGLESv2/renderer/Renderer.cpp 内の ANGLE_ENABLE_D3D11 を 1 にする。
 +
 +この場合 HOST PC が D3D11 対応の場合は D3D11 を利用し、対応していない場合は D3D9 が用いられます。
 +
 +↓Direct3D 9 で走らせた場合
 +
 +<code>
 +GL_VERSION: OpenGL ES 2.0 (ANGLE 1.3.d70707b435ef)
 +GL_RENDERER: ANGLE (NVIDIA GeForce GTX 650 Direct3D9Ex vs_3_0 ps_3_0)
 +GL_VENDOR: Google Inc.
 +GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.00 (ANGLE 1.3.d70707b435ef)
 +</code>
 +
 +↓Direct3D 11 の場合
 +
 +<code>
 +GL_VERSION: OpenGL ES 2.0 (ANGLE 1.3.d70707b435ef)
 +GL_RENDERER: ANGLE (NVIDIA GeForce GTX 650 Direct3D11 vs_5_0 ps_5_0)
 +GL_VENDOR: Google Inc.
 +GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 1.00 (ANGLE 1.3.d70707b435ef)
 +</code>
 +
 +
 +Direct3D 11 で動作可能になったことで、現在 OpenGL ES 3.0 への対応も進められているようです。
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +====== Mesa 3D ======
 +
 +Ubuntu の場合の install 方法
 +
 +<code>
 +$ sudo apt-get install libgl1-mesa-dev libgles2-mesa-dev mesa-utils-extra
 +</code>
 +
 +OpenGL ES 2.0 / 3.0 API を利用できます。 
 +ES 3.0 が使えるかどうかは HOST GPU/CPU、OS 環境によって異なります。
 +対応しているバージョンを調べるには、mesa-utils-extra に含まれている es2_info コマンドを使います。
 +ただし llvmpipe はソフトウエアレンダラ。
 +
 +<code>
 +// Ubuntu 14.04 : VMware Player
 +EGL_CLIENT_APIS: OpenGL OpenGL_ES OpenGL_ES2 OpenVG 
 +GL_VERSION: OpenGL ES 2.0 Mesa 10.1.0
 +GL_RENDERER: Gallium 0.4 on SVGA3D; build: RELEASE;
 +
 +// Ubuntu 14.04 : RADEON HD 6750M
 +EGL_CLIENT_APIS: OpenGL OpenGL_ES OpenGL_ES2 OpenGL_ES3 
 +GL_VERSION: OpenGL ES 3.0 Mesa 10.1.0
 +GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 3.4, 256 bits)
 +
 +// Ubuntu 14.04 : Intel HD 4000
 +EGL_CLIENT_APIS: OpenGL OpenGL_ES OpenGL_ES2 OpenGL_ES3 
 +GL_VERSION: OpenGL ES 3.0 Mesa 10.1.0
 +GL_RENDERER: Mesa DRI Intel(R) Ivybridge Mobile 
 +GL_EXTENSIONS:
 +</code>
 +
 +es2_info コマンドは
 +Nexus 7 (2012) 上の Ubuntu 13.04 desktop など、ARM ベースの Linux 上でも使えます。
 +
 +ライブラリは libEGL / libGLESv2 をリンクします。
 +
 +<code>
 +FLB_LIBFLAGS= -lm -lEGL -lGLESv2 -lX11
 +</code>
 +
 +
 +
  
  
opengl/glesemulator.1422197983.txt.gz · 最終更新: 2015/01/25 23:59 by oga