OpenGL ES 入门 -- 绘制图形

426 阅读2分钟

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

前言

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

效果展示

具体细节

1.新建OpenGL ES上下文

2.顶点数组

顶点数组指定每个顶点的属性,是保存在应用程序地址空间的缓冲区,它们作为顶点缓冲区对象的基础,提供指定顶点属性数据的一种高效、灵活的手段,顶点数组用glVertexAttribPointerglVertexAttribIPointer函数指定。

使用常量顶点属性API设置颜色,glVertexAttrib*命令用于加载index指定的通用属性。

GL_TRIANGLE、GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN区别

GL_TRIANGLE:绘制一系列单独的三角形。 (v0,v1,v2),(v1,v2,v3) GL_TRIANGLE_STRIP:绘制一系列相互连接的三角形。 (v0,v1,v2),(v2,v1,v3) GL_TRIANGLE_FAN:绘制一系列相连的三角形。 (v0,v1,v2),(v0,v2,v3)

注意以上三种方式的顶点顺序,GL_TRIANGLE 任意指定顶点的顺序,GL_TRIANGLE_STRIP描述的是相接,即绘制多个三角形时,以上一个三角形的最后一个顶点为起始,GL_TRIANGLE_FAN 描述的是相连,即绘制多个三角形的第一个顶点相同,可自行参照Demo理解实现。

总结

  • 1.存储顶点属性数据有两种常用的方法:结构数组和数组结构,在大部分情况下,这两种方法中结构数组是比较高效的,原因是,每个顶点属性可以按照顺序读取,这将可能造成高效的内存读取方式,具体的实现方式后续将会实现。
  • 2.在这里我们使用了6个顶点绘制了两个三角形组成的长方形,我们还可以使用索引,减少重复的顶点,使用4个顶点绘制,具体的实现方式后续将会实现。

以上使用顶点数组绘制了个简单的长方形,代码里有相关的注释,可以自行理解,有什么问题错误,可私信留言交流,万分感谢。

Demo下载地址,欢迎交流