我主要对2D Android游戏的OpenGL ES中的纹理有一些疑问。
我知道我可以使用的最少纹理单位数是多少?该游戏将需要Android 2.3.3及更高版本,因此,我认为Adreno 200将是执行此工作的最早的GPU。假设较新的纹理单元具有更多的纹理单元,则问题转化为“有多少个纹理单元具有Adreno 200?”
可以有多大的纹理?用于位图的“安全”尺寸是多少像素?当然,由于OpenGL ES以压缩格式保存纹理,因此与1000x1000的海底图片相比,可能充满1000x1000的纹理(例如,蓝色)的确很小,但是平均而言,您认为“安全使用”?我知道我可以测试我的应用程序时是否发现是否使用了过多的内存,但是我不想白费力气。
纹理/ vbos /其他是否存储在RAM中?在PC专用图形卡上,我不知道,但据我所知,电话(至少是低端电话)使用RAM存储GPU的主要资源。我是不是错了?
在对象不会过多和/或过多调整大小的2D游戏中使用Mip映射是好是坏?
最佳答案
Adreno 200具有用于顶点着色器的4个纹理单元和用于片段着色器的16个纹理单元。 More details。
Adreno 200的最大纹理尺寸为2048x2048。
AFAIK,Adreno 200使用共享内存架构和主内存。
使用mipmaps意味着您需要x1.3更多的内存来存储纹理像素。