iOS视觉

十八 OpenGL ES简介

2020-08-05  本文已影响0人  王俏

OpenGL ES(OpenGL for Embedded Systems)

以手持和嵌入式为目标的高级3D图形应用程序编程接口

支持平台:iOS, Andriod , BlackBerry ,bada ,Linux ,Windows.

OpenGL 3.0 图形管线

image

开发者只能设置顶点着色器和片元着色器

顶点着色器

attribute vec4 position;
attribute vec2 textCoordinate; uniform mat4 rotateMatrix; varying lowp vec2 varyTextCoord; void main()
{
varyTextCoord = textCoordinate;
vec4 vPos = position;
vPos = vPos * rotateMatrix;
gl_Position = vPos; }

图元装配 : 将顶点数据计算成一个个图元

图元装配阶段:将顶点着色器的输出值执行裁减,透视分割,视口变化后进入光栅化阶段。

图元:点,线,三角形等

光栅化

将图片转化成一组二维片段(屏幕上可绘制的像素)的过程

这些转化的⽚段将由片元着⾊器处理

片段着色器/片元着色器

image

像素归属测试:

确定帧缓存区中位置(Xw,Yw)的像素⽬前是不是归属于OpenGL ES所有. 例如,如果一个显示OpenGL ES 帧缓存区View 被另外一个View 所遮蔽.则窗⼝系统 可以确定被遮蔽的像素不属于 OpenGL ES上下文.从⽽不全显示这些像素

注意:像素归 属测试是OpenGL ES 的一部分,它不由开发者开人为控制,⽽是由OpenGL ES 内部进行

裁剪测试:确定(Xw,Yw)是否位于作为OpenGL ES状态的一部分裁剪矩形范围内.如果该⽚段位于裁剪区域之外,则被抛弃

深度测试:输⼊片段的深度值进步⽐较,确定⽚段是否拒绝测试

混合:将新生成的片段颜⾊与保存在帧缓存的位置的颜⾊值组合起来.

抖动:可⽤于最⼩化因为使用有限精度在帧缓存区中保存颜色值⽽产生的伪像

EGL (Embedded Graphics Library )

OpenGL规范没有提供如何创建渲染上下文或者上下文如何连接到原生窗口系统,, EGL 是Khronos 渲染API(如OpenGL ES) 和原生窗口系统之间的接⼝。

因为每个窗口系统都有不同的定义,所以EGL提供基本的不透明类型—EGLDisplay, 这 个类型封装了所有系统相关用于和原⽣窗⼝系统接口.

唯一⽀支持 OpenGL ES 却不⽀持EGL 的平台是iOS. Apple 提供⾃己的EGL API的iOS实现,称为EAGL.

上一篇 下一篇

猜你喜欢

热点阅读