【发布时间】:2011-05-28 14:13:54
【问题描述】:
我正在使用 opengl 和 cocos2d 端口 (http://code.google.com/p/cocos2d-android-1) 创建一个 android 游戏。我的目标是广泛的设备,并希望确保它运行良好。我只在一个 nexus 上进行测试,并希望从在较慢设备上具有经验的人那里获得一些意见。
目前游戏使用两个 1024x1024 纹理以及两个 256x256 纹理。这在大多数设备的限制范围内吗?在这些情况下,任何人都对图形内存限制有任何经验或经验吗?如果 gfx 内存超出,它会分页到普通内存吗?
【问题讨论】:
-
1024x1024 纹理在分辨率小于此的设备上的用途是什么?我正在开发 Xbox 360/PS3 游戏,我们很少使用这种大小的纹理。
-
1024x1024 的原因是为了存储作为纹理子区域的各种精灵的“图集”。否则效率更高,也更难负担。
-
您的纹理缓存不会对此感到满意(尽管我承认我不知道纹理缓存在最常见的 Android GPU 内部是如何工作的)。无论如何,这就是你游戏的全部范围吗? 2*1024x1024 和 2*256x256?这应该适合大多数手机。
-
每个精灵都将来自不同的数据(不管它是否在相同的纹理中)。如果纹理缓存只缓存一个纹理而不是 10 个纹理,那么纹理缓存会如何不快乐呢?将它们全部放在单个纹理中的主要原因是,在加载单个纹理的单个 glDrawQuads 调用中,您可以绘制多个精灵。是的,这就是我的游戏的纹理数据的范围,很高兴知道它应该适合,谢谢!
-
纹理缓存不缓存单个纹理。它缓存页面。如果您有一个小纹理,它将能够将整个纹理放入缓存中。如果它很大,那么就没有那么多了。但是还有其他需要考虑的事情——渲染状态开关也很昂贵,所以你不想为每个绘制调用重新绑定你的纹理。这始终是一种平衡行为。看看你的游戏表现如何,如果有问题,你可以尝试不同的东西,比如纹理大小。
标签: android opengl-es cocos2d-android