老問題了,手機對軟件的兼容性是受處理器的arm,x86,mips等結構影響。對游戲的兼容性是受gpu的紋理壓縮方式的影響。
“手機3D游戲兼容性產生的原因
現在Android平臺大多數手機3D游戲都只有適用于Tegra2處理器的版本,因此那些采用PowerVRSGX系列GPU、高通Adreno系列GPU和ARM的Mali系列GPU的手機便出現了無法正常運行這些3D游戲的情況。這個游戲兼容性問題,就是所謂的沒有數據包支持,究其根本原因,是因為各家GPU支持的紋理壓縮格式不同。
目前安卓平臺使用的GPU支持的紋理格式主要有以下幾種:
PVRTC:PowerVR系列GPU支持
ATITC:高通Adreno系列GPU支持,來自以前的ATI
DXTC:nVIDIATegra系列的GeforceULP支持,其實是微軟DirectX的東西,來源于以前的S3TC
ETC1:ARM的Mali系列GPU支持,以上三家也支持
上述幾種紋理壓縮格式都是互不兼容的,好在大家都支持OPENGLES要求的一種通用格式ETC1。
但是ETC1有個問題,就是不支持Alpah通道,只能把一個紋理拆成2個去間接實現,游戲廠商大概覺得比較麻煩吧。所以像地牢守護者等大作,只提供了PVRTC、ATITC和DXTC三種數據包,這樣只支持ETC1的GPU就會有點悲劇了。”
除了以上4種gpu分類,還有一個新的博通系的gpu,自家的videocore,一般用通用數據包,由于加入安卓太晚,很多游戲都不兼容。
還有軟件(非游戲)的兼容性問題是由處理器的結構引起的。比如k900的處理器z2580是x86,而其他手機的處理器大部分是arm結構,采用的指令集不同。安卓是基于arm處理器,x86指令要運行安卓就需要翻譯才能運行,其他mips,powerpc結構處理器也是一樣的問題。
k900的應用兼容問題。
mips則使用magiccode處理。
只要知道手機處理器的cpu和gpu,就能基本判斷出其兼容性。