ホーム < ゲームつくろー! < OpenGL ES 2.0技術編
その1 OpenGL ES 2.0が動く環境を用意する
DirectXはDirectX SDK、要はプログラムする為のライブラリをダウンロードしてインストールする事で開発出来ました。DirectXの動く環境すなわち「実機」はWindows
PCです。一方OpenGL ES 2.0の実機は携帯端末や家電製品などがターゲットです。逆に言えば、OpenGL
ES 2.0の実機はWindows PCでは無い訳です。と言う事は、この開発をWindowsで行うには「エミュレータ」を通す事になります。
@ OpenGL ES 2.0のエミュレータを動かす環境を整える
OpenGL ES 2.0をWindowsで開発する為のエミュレータは色々とあるようです。その中でGoogleが提供している「ANGLE(Almost Native Graphics Layer Engine)」を使う事にしました。理由はANGLEが2011.10にOpenGL ES 2.0.3の互換性テストに合格した事、OSSである事、EGL 1.4という各プラットフォームのウィンドウシステムとOpenGLを繋ぐライブラリを提供してくれている事、裏でDirectX9を通してくれている事(Windowsに優しい)、WebGLも見越せる事、など様々な利点があるためです。
ANGLEは「angleproject」からダウンロードできます:
https://code.google.com/p/angleproject/
また、エミュレータとSDKの詳しいセットアップ方法についてはこちらのWikiに記載されています:
https://code.google.com/p/angleproject/wiki/DevSetup
この章の環境設定は上記のWikiを参考にしています。
ANGLEを動かすためには以下の環境が必要のようです:
・ Windows SDK for Windows7
・ DirectX SDK(June 2010)
・ Visual C++ 2010 Express Edition
DirectXを通してOpenGL ES 2.0をエミュレートするので、それ用の環境が必要と言う事ですね。
○ Windows SDK for Windows7
こちらの「Install Now」からDLできます。winsdk_web.exeというネットワーク越しでのインストール実行ファイルがDLされますので、静々とインストールしましょう。
一つ大きな注意があります。VisualStudio 2010 Service Pack 1がすでにインストールされている場合、Windows SDK for Windows 7のインストールが途中で失敗してしまいます。実際私はハマりました。回避するには、一度Service Pack 1をアンインストールする必要があります。これにはコマンドラインで以下のアンインストールコマンドを実行すると良いようです(情報はこちらhttp://stackoverflow.com/questions/4102259/directx-sdk-june-2010-installation-problems-error-code-s1023)):
MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
実行すると「Visual C++ 2010 Redistributable Package version 10.0.40219 (Service Pack 1)」がアンインストールされます。その状態でWindows SDK for Windows7をインストールします。デフォルトのインストール先である「C:\Program Files\Microsoft SDKs\Windows\v7.1」にフォルダが出来ていればOKです。
○ DirectX SDK (June 2010)
以下のMicrosoftのDownload Centerから直接インストーラ(DXSDK_Jun10.exe)をDLできます(アクセスするとDLが始まるので注意):
https://www.microsoft.com/en-us/download/confirmation.aspx?id=6812
572MB程DLサイズがあります。インストール中「Help Improve the DirectX SDK」というDirectX SDKの改良の為に情報を送信して良いかを尋ねる所があります。良いならYes、嫌ならNoです。後は静々と進めて下さい。デフォルトで「C:\Program Files\Microsoft DirectX SDK (June 2010)」というフォルダが出来ていればOK。
○ Visual C++ 2010 Express Edition
これはVC++2010 EEが入っていない方のみの作業です。Visual Studioのダウンロードサイト(http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express)からVisual C++ 2010 Express Editionをダウンロードしてインストールして下さい。
○ Visual Studio 2010 Service Pack 1再インストール
MocrosoftのDownload Centerの「Microsoft Visual Studio 2010 Service Pack 1(インストーラー)」http://www.microsoft.com/ja-jp/download/details.aspx?id=23691からインストーラをダウンロードするか、Windows Updateを更新すると再インストール出来ます。インストールしないとANGLEのコードをビルド出来ない(ソルーションがうまく開かない)ので多分必須です。ちなみに、信じられないくらい長い時間がかかります(^-^;。
A ANGLEソースコードの取得
ANGLEはOSS(オープンソースソフトウェア)なので、誰でも無料でコードをDL出来ます。ANGLEはgooglecodeの一つでSVN(サブバージョン)でバージョン管理されています。Windows上のSVNクライアントと言うとTortoiseSVNが有名です(http://tortoisesvn.net/)。SVNクライアントが入っていない方はDLしてインストールして下さい。
ANGLEのリポジトリは http://angleproject.googlecode.com/svn/trunk です。お使いの環境の適当な所にフォルダを作成し、上記リポジトリをチェックアウトして下さい(SVNクライアントの使い方はここでは割愛します)。
B OpenGL ES 2.0エミュレータのDLL作成
Aでチェックアウトしたフォルダ(ANGLEとします)のsrcフォルダ下に「ANGLE.sln」ソルーションがあります(VC++2010用です)。これを起動すると5つのプロジェクト(libEGL、libGLESv2、preprocessor、translator_common、translator_hlsl)が入ったソルーションが立ち上がります。これをビルドしてOpenGL ES 2.0エミュレータ用のDLLを作成します。
このままビルドしても色々エラーが出てしまいます。パスが通っていないのが主な原因です。まずlibEGLのプロジェクトのプロパティを開き、以下のパスを通します:
インクルードパス C:\Program Files\Microsoft DirectX SDK %28June 2010%29\Include ライブラリパス C:\Program Files\Microsoft DirectX SDK %28June 2010%29\Lib\x86
つまりDirectXのインクルードとライブラリのパスを設定するという事です。
もう一つlibGLESv2も同様にDirectXとWindows SDKへのパスを通します:
インクルードパス C:\Program Files\Microsoft DirectX SDK %28June 2010%29\Include ライブラリパス C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib
C:\Program Files\Microsoft DirectX SDK %28June 2010%29\Lib\x86
これでビルド出来るかなと思ったのですが、「InsertBuiltInFunctionsCommon」及び「InsertBuiltInFunctionsVertex」という関数が無いというリンカエラーが出ました(Rev.2426)。ANGLEのsrc/compiler以下を検索するとbuiltin_symbol_table.cppという実装ファイル内に実体があり、これがlibGLESv2プロジェクトに追加されていないために起きているようです。このファイルを追加すればリンカエラーが無くなりました。
ビルドに成功するとルートフォルダの下にLibというフォルダが作られ、その下にあるReleaseフォルダ内に
・ libEGL.lib、libEGL.dll
・ libGLESv2.lib、libGLESv2.dll
が出来あがります。これらのlibとdllでOpenGL ES 2.0がエミュレートできます!
結構な手順を経てlibとdllが出来ました。次の章でさっそくこれらを使ってみます。