在上一篇OpenGL ES學習筆記2: 使用shader(著色器)展現圖片中介紹了紋理環繞和紋理過濾的概念和設置,但是沒有直觀展示的效果,在這里通過代碼,展示改變紋理的環繞和過濾方式帶來的效果變化
<h5>一、上效果圖</h5>
- 以下所有的效果都是 小紋理來填充大圖形,不同紋理設置造成不同的效果。
1、線性過濾+邊緣約束.png
說明:這張圖的效果的直觀感覺是:模糊和邊緣被拉伸。模糊的原因是因為紋理過濾 采用的是 ** 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