日別アーカイブ: 2011年8月7日

Android Galaxy S2 ARM Mali-400 MP は速い (2)

そこそこ複雑なシーンでの比較。

Mali-400MP  800x480 : 50fps
Adreno 205  854x480 : 20fps   
Adreno 200  800x480 :  5fps
PVR SGX540  800x480 : 23fps

そこそこの背景+キャラ描画に Shadow map ありの数値です。
TBR だし OpenGL ES 2.0 では Shadow map は現実的ではないと
思ってましたが Mali だと十分できそうです。
影なしだと全体的に数値が上がり、Mali はほとんど 60fps 固定。
PVR 対策で alpha test は off。
圧縮テクスチャ次第ではもう少し差が縮まるかもしれません。

Tegra2 は解像度が異なり近い条件での比較ができませんでした。
Tegra2 には depth texture がありませんが、代わりに half float
の color buffer を使っています。

if( Extension("GL_OES_depth_texture") ){
  ~
}else if( Extension("GL_OES_texture_half_float") ){
  // Tegra250
  glGenTextures( 1, &gShadowTexture );
  glBindTexture( GL_TEXTURE_2D, gShadowTexture );
  glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE, width, height, 0, GL_LUMINANCE, GL_HALF_FLOAT_OES, NULL );

  glGenRenderbuffers( 1, &gShadowDepth );
  glBindRenderbuffer( GL_RENDERBUFFER, gShadowDepth );
  glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, width, height );

  glGenFramebuffers( 1, &gShadowTarget );
  glBindFramebuffer( GL_FRAMEBUFFER, gShadowTarget );
  glFramebufferTexture2D( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gShadowTexture, 0 );
  glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, gShadowDepth );
}

GL ES Extension 一覧

関連エントリ
Android Galaxy S2 ARM Mali-400 MP