OpenGL ES 入门 -- 渲染图片

798 阅读1分钟

如果不想安逸的被淘汰,那就奋不顾身的去努力

OpenGL ES 入门 -- 绘制图形

前言

这里是一篇新手教程,是第二篇记录学习OpenGL ES的开始,很幸运现在很多关于这方面的博客文章可以借鉴学习,不幸的是自己荒废了很多时间,现在的环境是Xcode11 + OpenGL ES 3.0,目标是渲染一张图片。

效果展示

相关代码

1.新建OpenGL ES上下文

2.顶点数组和索引数组

顶点数组里包含顶点坐标、纹理坐标数据,在OpenGLES内,世界坐标系是[-1,1],所以[0,0]在屏幕的中间,根据图片的宽高比传入顶点数组,纹理坐标取值范围是[0,1],左下角是(0,0),右上角是(1,1),纹理坐标与顶点坐标相对应,通过索引只需四个顶点即可绘制。

3.创建缓冲区

这里几个比较重要的API:

  • 1.glGenBuffers分配n个缓冲区对象名称,返回的缓冲区对象名称是0以外的无符号整数,0由OpenGL ES保留,不表示缓冲区对象
  • 2.glBindBuffer用于指定当前缓冲区对象
  • 3.glBufferData存储顶点数组数据或者元素数组数据
  • 4.glEnableVertexAttribArray开启对应的顶点属性
  • 5.glVertexAttribPointer指定顶点数组,分配和存储顶点属性数据。

4.绑定纹理

通过CGBitmapContextCreate创建图形上下文,然后进行纹理初始化设置参数绑定纹理,通过glTexImage2D加载图片纹理。

5.激活对应的纹理,绘制图片

Demo下载地址,欢迎交流