在上一篇OpenGL ES学习笔记2: 使用shader(着色器)展现图片中介绍了纹理环绕和纹理过滤的概念和设置,但是没有直观展示的效果,在这里通过代码,展示改变纹理的环绕和过滤方式带来的效果变化
<h5>一、上效果图</h5>
- 以下所有的效果都是 小纹理来填充大图形,不同纹理设置造成不同的效果。
说明:这张图的效果的直观感觉是:模糊和边缘被拉伸。模糊的原因是因为纹理过滤 采用的是 ** GL_LINEAR(线性过滤) ** ;纹理环绕 采用的是 GL_CLAMP_TO_EDGE。
2、线性过滤+重复纹理环绕.png说明:这张图的效果的直观感觉是:模糊。模糊的原因是因为纹理过滤 采用的是 ** GL_LINEAR(线性过滤) ** 。
3、邻近过滤+边缘约束.png说明:这张图的效果的直观感觉是:拉伸。拉伸的原因是因为纹理环绕 采用的是 GL_CLAMP_TO_EDGE。
4、邻近过滤+重复纹理环绕.png说明:这张图的效果是比较理想的:纹理环绕 采用的是 ** GL_REPEAT(重复纹理),纹理过滤 采用的是 ** GL_LINEAR(线性过滤) 。
<h5>二、主要代码</h5>
- (void)updateTextureParameter{
glTexParameteri(self.baseEffect.texture2d0.target,
GL_TEXTURE_WRAP_S,
self.shouldRepeatTexture ? GL_REPEAT : GL_CLAMP_TO_EDGE);
//放大(少数纹素映射片元)
glTexParameteri(self.baseEffect.texture2d0.target,
GL_TEXTURE_MAG_FILTER,
self.shouldUseNearestFilter ? GL_NEAREST : GL_LINEAR);
}
代码直通车:QSOpenGLES002_Texture
网友评论