每个网格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坐标范围如下:

  • 从(0.0,0.0)到(1.0,0.5)
  • 从(0.0,0.5)到(0.5,1.0)
  • 从(0.5,0.5)到(1.0,1.0)
  • 你将不得不将这些相应地翻译到你的顶点。


    我很确定纹理不必与你的精灵有相同的尺寸。 如果你的精灵是520x260,你应该可以将你的纹理缩小到512x256,并将它映射到你的精灵上,而不会注意到稍小的分辨率。

    链接地址: http://www.djcxy.com/p/87141.html

    上一篇: OpenGL ES 1.1 multiple textures per mesh

    下一篇: Tutorials and libraries for OpenGL