iOS|OpenGL ES几何图形的绘制顺序
不知道你在使用glDrawArrays绘制多个几何图形的时候有没有注意到它们的绘制顺序.如你在代码中依次使用glDrawArrays绘制了如下几个几何图形:
(1)绘制一个三角形那么实际上OpenGL ES在绘制几何图形的时候的顺序和你程序执行的顺序是相反的,即实际的绘制顺序是:
(2)绘制一个四边形
(3)绘制一个五角形
(3)绘制一个五角形这是为什么呢?你可能也发现了当你设置好了所有的顶点数据,并调用了glDrawArrays,但如果你不接着调用[context presentRenderbuffer:GL_RENDERBUFFER_OES]; 屏幕上依然没有任何输出。
(2)绘制一个四边形
(1)绘制一个三角形
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
的作用是展示渲染缓冲区,也就是说,你之前调用glDrawArrays绘制的顶点数据实际上先放在了渲染缓冲区中,当你执行了这行代码时才从渲染缓冲区中将顶点数据取出并绘制。从几何图形的绘制顺序可以发现,实际上渲染缓冲区的数据结构是一个栈结构。栈是一种先进后出的数据结构,即压入数据时依次将放进的数据放在栈顶位置,而取出数据的时候依次将栈顶的数据弹出。
代码中执行绘制的顺序和数据压栈的方式如下:
(1)绘制一个三角形
三角形 |
(2)绘制一个四边形【iOS|OpenGL ES几何图形的绘制顺序】
四边形 |
三角形 |
(3)绘制一个五角形
五角形 |
四边形 |
三角形 |
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- 接口|axios接口报错-参数类型错误解决
- iOS|iOS 笔记之_时间戳 + DES 加密
- iOS,打Framework静态库
- 常用git命令总结