对于我的2D Android游戏,我有几个问题主要是关于OpenGL ES中的纹理。
我知道可以使用的纹理单元数量最少?该游戏将需要Android 2.3.3及更高版本,因此,我认为Adreno 200将是最老的GPU来完成这项工作。假设较新的纹理单元有更多纹理单元,问题转化为“Adreno 200有多少纹理单元?”
纹理有多大?以像素为单位的位图使用的“安全”大小是多少?当然,由于OpenGL ES以压缩格式保存纹理,可能会填充1000x1000纹理,比如海平面的1000x1000图片,蓝色将非常小,但平均来说,你认为“安全”的大小使用“?我知道,当我测试我的应用程序时,我会发现是否使用了太多内存,但我不想徒劳无功。
纹理/ vbos /其他是否存储在RAM中?在PC专用图形卡上,我知道它没有,但据我所知,手机(至少是低端手机)使用RAM来存储GPU的主要资源。我错了吗?
在2D游戏中使用mip-mapping是好还是坏,其中对象不会过多和/或过于频繁地调整大小?
答案 0 :(得分:2)
来自the spec:
GL_MAX_TEXTURE_IMAGE_UNITS
,最小8
GL_MAX_TEXTURE_SIZE
,最低64
答案 1 :(得分:1)
Adreno 200有4个用于顶点着色器的纹理单元和16个用于片段着色器的纹理单元。 More details
Adreno 200的最大纹理尺寸为2048x2048。
AFAIK,Adreno 200使用共享内存架构和主内存。
使用mipmap意味着你需要多x1.3的内存来存储纹理像素。
答案 2 :(得分:0)
对于问题4:在缩放纹理时使用Mipmap,因此很可能在常规2D游戏中你没有使用它们。对于其他问题,我没有任何好的答案。