美文网首页iOS技术
OpenGL ES学习笔记3:纹理效果设置

OpenGL ES学习笔记3:纹理效果设置

作者: 南华coder | 来源:发表于2017-03-01 12:09 被阅读68次

    在上一篇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

    相关文章

      网友评论

        本文标题:OpenGL ES学习笔记3:纹理效果设置

        本文链接:https://www.haomeiwen.com/subject/kinxgttx.html