纹理是OpenGL很重要的一部分,处理视频图像,基本就是在使用纹理做各种处理,本文会实现将一张图片加载到纹理中,再由OpenGL渲染到屏幕上。
加载与创建纹理
一般的图片格式都是压缩的,使用UIImage加载后,需要转换成位图(bitmap),一般使用RGBA格式,本次使用的图片带有alpha通道,如果使用不带alpha通道的图片,转换位图的代码也需要相应作改动。
1 |
|
修改shader程序
这里给顶点着色器添加一个参数输入纹理坐标,然后增加一个传给片段着色器的纹理坐标参数,然后片段着色器将顶点着色器传来的坐标用于获取纹理上的颜色。
1 |
|
设置纹理坐标
因为使用GL_TEXTURE_2D,所以纹理坐标是二维向量,在OpenGL中纹理坐标是以左下角为原点的。这里将之前的顶点坐标数组扩充,每个顶点后面跟着一个纹理坐标点。
1 |
|
将纹理坐标作为数据传给shader
1 |
|
渲染显示
之后再调用glDrawElements函数渲染即可显示。
<img src=”https://i.loli.net/2019/06/15/5d047c7d7651684651.png” width = “36%” height = “” div align= center/>