そこそこ複雑なシーンでの比較。
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 ); }