每个网格OpenGL ES 1.1多个纹理
我对OpenGL很陌生,所以我很抱歉,如果这可能是非常基本的(或没有意义)。
我正在制作一个2D游戏,其中有很多大小不是两个幂的精灵。 所以我会有像520x260那样的纹理,而且不能重新设计。 现在我的理解是,因为OpenGL ES 1需要纹理为2的权力,所以我会浪费大量内存(因为我之前示例中的纹理在硬件上实际占用了1024x512)。
我一直在想的是,不是让精灵成为两个具有这种大质地的三角形,我可以让精灵由更小的三角形组成,并且我可以在较小的pow2块中分解为大质地(比如说128x128),可以单独使用这些三角形(使用类似网格地图的东西)。
所以我的问题是:为单个网格使用多个纹理是可行和可行的吗? 如果是这样,那么额外的计算(对于所有较小的三角形以及将它们纹理化所必需的)是否值得纹理记忆保存?
PS我正在研究Android,但我不认为这有什么区别。
绝对可以,应该这样做,以节省内存。 唯一需要担心的是你的紫外线贴图。 你将不得不根据你如何安排你的网格来调整你的UV坐标。
例如,假设你想用128x128网格填充三个纹理:
+-----------------+
|1. |
| 128x64 |
| |
+-----------------+
|2. |3. |
| 64x64 | 64x64 |
| | |
+--------+--------+
如果你想映射每个纹理,你的UV坐标范围如下:
你将不得不将这些相应地翻译到你的顶点。
我很确定纹理不必与你的精灵有相同的尺寸。 如果你的精灵是520x260,你应该可以将你的纹理缩小到512x256,并将它映射到你的精灵上,而不会注意到稍小的分辨率。
链接地址: http://www.djcxy.com/p/87141.html