【问题标题】:Image size for OpenGL ES textureOpenGL ES 纹理的图像大小
【发布时间】:2011-08-11 13:42:46
【问题描述】:

我还不太了解 OpenGL ES。我只学过画三角形等等。我还没有学习纹理。

我听说在某些设备中,图像的宽度或高度必须是 2 的幂,例如:2、4、8、16、32 等。为什么?如果我有尺寸为 53 x 76 的图像,我该怎么办?

我需要知道这一点,因为这是阻止我从画布切换到 OpenGL ES 的原因。 谢谢你:)

【问题讨论】:

    标签: image opengl-es texture2d


    【解决方案1】:

    具有 2 次幂的纹理极大地简化了纹理硬件,并为许多优化腾出空间以使其更快。如果您有非 2 次幂纹理,则有两种选择:

    1) 用你想要的任何东西填充“额外”的空间(我会选择像亮绿色这样的颜色,这样如果你在屏幕上看到这种颜色,你就知道你在 texcoords 上做错了),在您的示例中,它将是 64x128,并调整您的纹理坐标以进行补偿。 IE。您的 texcoords 现在将从 (0, 0) 变为 (53.0/64.0, 76.0/128.0)。

    2) 将纹理拉伸到最接近的 2 次方,在您的示例中再次为 64x128,并按原样使用现有的 texcoords。

    【讨论】:

    • 啊我明白了。这就像“剪裁”或“剪裁”图像.. :)
    【解决方案2】:

    一般来说,图形芯片处理宽度和高度为 2 次方的图像更简单,需要更少的逻辑/芯片空间。如果您开始使用 mip-map,这将变得更加重要。

    一些 OpenGL|ES 图形芯片支持非两个纹理的幂,但这需要付出一定的代价:不支持 Mip-Maps,如果开始旋转图像,您可能会受到巨大的性能影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多