iOS纹理重复半npot纹理

时间:2013-11-04 13:24:35

标签: ios opengl-es cocos2d-x

我有一个纹理4x300(半npot),我想用于500x300精灵。 我将wrapS设置为GL_REPEAT并将wrapT设置为GL_CLAMP_TO_EDGE,因为我只需要一边重复。 但是,我得到的只是一个黑色方块。 当我将纹理的尺寸更改为4x512(底池)时,图像被正确绘制。

iOS上是否有任何方法可以使用修剪后的图像(4x300),只有一侧重复,或者我是否需要将其扩展为完全具有二维效果?

1 个答案:

答案 0 :(得分:1)

在OpenGL ES中,NPOT纹理不能具有REPEAT模式。参见:

  

在OpenGL ES 2.0中,纹理可以具有非幂二(npot)   尺寸。换句话说,宽度和高度不需要是a   两个人的力量。但是,OpenGL ES 2.0确实有限制   如果纹理尺寸不是幂的,可以使用的包裹模式   二。也就是说,对于npot纹理,包装模式只能是   GL_CLAMP_TO_EDGE和缩小过滤器只能是GL_NEAREST   或GL_LINEAR(换句话说,不是mipmapped)。扩展名   GL_OES_texture_npot放宽了这些限制并允许换行模式   GL_REPEAT和GL_MIRRORED_REPEAT也允许使用npot纹理   使用全套缩小过滤器进行mipmap。

此外,没有半NPOT纹理这样的东西。纹理可以是POT,也可以不是,两个维度都要考虑。