OpenGL ES 3. 纹理环绕

大家好,接下来将为大家介绍OpenGL ES 3. 纹理环绕。

纹理坐标的范围通常是从(0, 0)到(1, 1),那如果我们把纹理坐标设置在范围之外会发生什么?

无论是 S 轴还是 T 轴的纹理坐标都是在 0.0~1.0 的范围内,这满足了大多数情况。但在特定的情况下,也可以设置大于 1 的纹理坐标。当纹理坐标大于 1 以后,设置的􏰭 方式就会起作用了。

1、重复纹理环绕

当顶点纹理坐标大于 1 时,则实际起作用的纹理坐标为纹理坐标的小数部分。也就是若纹理坐标为 3.3,则起作用的纹理坐标为 0.3。

4 个顶点的纹理坐标改为了(0,0)、(4,0)、(0,2)、(4,2)。 因此,矩形中各片元的纹理坐标范围为 S 轴方向 0~4,T 轴方向 0~2,应该在 S 轴方向重复 4 次,T 轴方向重复 2 次。

GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, 
    GLES30.GL_TEXTURE_WRAP_S, GLES30.GL_REPEAT); //设置 S 轴的􏰸􏰹方式为重复环绕
GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, 
    GLES30.GL_TEXTURE_WRAP_T, GLES30.GL_REPEAT); //设置 T 轴的􏰸􏰹方式为重复环绕

 

2、镜像重复环绕

当顶点纹理坐标大于 1 时,则实际起作用的纹理坐标为纹理坐标 的小数部分。也就是若纹理坐标为 3.3,则起作用的纹理坐标为 0.3。

4 个顶 点(两个三角形)组成,顶点纹理坐标分别为(0,0)、(4,0)、(0,4)、(4,4)。因此,可以看出矩形 中各片元的纹理坐标范围为 S 轴方向 0~4,T 轴方向 0~4,由于镜像重复是左右对称和上下对称, 所以,S、T 轴均重复对称两次。

GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, //设置 S 轴的􏰸􏰹方式为􏰼镜像重复 
    GLES30.GL_TEXTURE_WRAP_S, GLES30. GL_MIRRORED_REPEAT);
GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, //设置 T 轴的􏰸􏰹方式为􏰼镜像重复 
    GLES30.GL_TEXTURE_WRAP_T, GLES30. GL_MIRRORED_REPEAT);

 

3、截取环绕

截取环绕方式中当纹理坐标的值大于 1 时都看作 1,因此,会产生边缘被拉伸的效果。

4 个顶点纹理坐标分别为(0,0)、(4,0)、(0,4)、(4,4),因此,矩形中的各片元纹理坐标范围为 S 轴方向 0~4,T 轴方 向 0~4。由于在此种环绕方式下,大于 1 的纹理坐标都看作 1,因此,产生了纹理的边缘被拉伸截取的效果。

GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, 
    GLES30.GL_TEXTURE_WRAP_S, GLES30.GL_CLAMP_TO_EDGE); //设置 S 轴的􏰸􏰹方式为􏰻截取环绕
GLES30.glTexParameterf(GLES30.GL_TEXTURE_2D, 
    GLES30.GL_TEXTURE_WRAP_T, GLES30.GL_CLAMP_TO_EDGE); //设置 T 轴的􏰸􏰹方式为􏰻截取环绕

 

最后,欢迎大家一起交流学习:微信:liaosy666 ; QQ:2209115372 。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值