美文网首页
OpenGL ES 纹理绘制

OpenGL ES 纹理绘制

作者: osbornZ | 来源:发表于2018-09-17 15:00 被阅读18次

    纹理绘制就是纹理映射,这里有个术语 纹素 ,不是用像素来表示纹理对象中的显示元素,主要是为了强调纹理对象的应用方式。纹理对象通常是通过纹理图片读取到的,这个数据保存到一个二维数组中,这个数组中的元素称为纹素(texel),纹素包含颜色值和alpha值。

    纹理填充绘制 WRAP参数

    纹理的绘制方式:

    • GL_REPEAT
    • GL_MIRRORED_REPEAT
    • GL_CLAMP_TO_EDGE
    • GL_CLAMP_TO_BORDER

    纹理详细的介绍,参考:
    二维纹理映射

    绘制颠倒的问题

    为什么会存在绘制颠倒的问题呢 ?

    "坐标系"

    纹理坐标系(uv)是右手坐标系,屏幕坐标又是左手坐标系;所以在屏幕中显示的点,需要在脚本之前或处理中进行y翻转。

    解决方案:

    • 在VBO顶点坐标上进行Y的处理(1-y)
    • 在顶点着色器中进行Y翻转 gl_Position = vec4(position.x, -position.y,position.z, 1.0);
    • 翻转纹理的Y轴坐标 vTexcoord = vec2(texcoord.x,1.0-texcoord.y);

    绘制比例问题

    UIImageView的contentMode经常使用的有3种:

    • scaleToFill
    • scaleAspectFit
    • scaleAspectFill

    我们需要使用比例处理:
    添加 < AVFoundation Framework >

    CGRect realRect = AVMakeRectWithAspectRatioInsideRect(image.size,   self.view.bounds);
    

    图像简单处理

    学会使用绘制纹理后,就可以使用脚本处理自定义的一些效果。

    • 灰度处理
    • 简答模糊处理
    • 简单的颜色映射,LUT滤镜

    Demo地址:openGL-ES 2

    相关文章

      网友评论

          本文标题:OpenGL ES 纹理绘制

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