星偶游戏重复名生成软件为什么视频不能生成

在OpenGL ES中绘制一张图片需要使用到纹悝(texture)绘制纹理步骤如下:

绘制纹理的shader需要顶点数据、纹理顶点数据和纹理。Vertex Shader代码如下:

创建program并获取参数句柄

创建program的过程在《OpenGL ES for Android 环境搭建》中详细介绍这里不在介绍,直接使用封装好的工具类代码如下:

创建全屏的顶点数据代码如下:

这里有4个点,每个点包含3个float数据玳表x,y,z。4个顶点的位置如下图:

OpenGL ES中绘制任何形状都是通过绘制多个三角形而组成所以我们将这4个点分为2个三角形,分布为(V1,V2,V3)和(V1,V3,V4)因此定义三角形索引数组代码如下:

将索引数组转为buffer,我们也将此方法封装在工具类里面代码如下:

纹理坐标的原点是左上角,右下角是(11),将整张图片绘制的纹理顶点数据代码如下:

纹理坐标的顶点顺序不是随便定义的要与定义的顶点数据一一对应,否则可能出现紋理错乱对应顺序如下图:

如果将纹理顶点设置如下:

纹理将逆时针旋转90度,通过此方法可以旋转、镜像纹理但我们一般不会使用此方法旋转、镜像纹理,可以通过OpenGL ES中著名的MVP矩阵进行此操作

纹理的的来源是一张图片,将图片转为Bitmap代码如下:

创建2D纹理id,代码如下(此方法将封装在工具类中):

  • count:生成纹理的个数

  • array:生成纹理id存放的数组。

  • offset:存放纹理id数组的偏移

纹理创建成功后返回纹理id,将Bitmap传递给此纹理代码如下:

GLUtils是系统工具类,并不是我们自己写的工具类

  • count:顶点的个数

到此绘制纹理就完成了。

参考资料