2012年4月5日木曜日

Androidの実機でだけGLES関連のエラーが出たらハードウェアアクセラレーションを疑おう

エミュレーターでは完璧に動くのに、実機(Galaxy Nexus)で動かすとエラーになるグラフィックス関連のプログラムがあった。

どうやらGLES関連でUnsupportedOperationExceptionが出ているらしい。

自分としてはどこがマズイのかサッパリわからないので調べると、似たような話があった。

android - Use hardwareAcceleration flag with Canvas.clipPath - Stack Overflow
・・・
mImageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
It work's for me.
・・・

問題のあるViewにレイヤーをソフトウェアレンダリングにする設定を加えると・・・動いた。

どうやら、ハードウェアアクセラレーションが完璧ではないらしい。

結論。Androidの実機でだけGLES関連のエラーが出たらハードウェアアクセラレーションを疑おう。