1.OpenGL ES基础理解

OpenGL

OpenGL(全名:Open Graphics Library) 所以一个图形API,由C++编写的图形处理框架,跨平台,严格规定了每个函数的执行,以及它的输出。但实现由OpenGL库的开发者自行决定。所以OpenGL库的开发者通常是显卡的生产商。你购买的显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。当你使用Apple系统的时候,OpenGL库是由Apple自身维护的。在Linux下,有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug。

OpenGL ES

OpenGL API 规模庞大而复杂,OpenGL ES是在OpenGL嵌入式设备上面的版本,也就是安卓/iPhone,其他嵌入式等移动设备的编程规范。

图片描述3.0图形管线的各个阶段,阴影部分表示管线的可编程阶段

图形管线

 

顶点着色器 Vertex shader

相当于告诉opengl图形的顶点,由此得知形状,才能进一步进行填充颜色等等。相当于一个骨架

一般⽤用来处理图形每个顶点变换(旋转/平移/投影等)

顶点着⾊器是OpenGL中⽤于计算顶点属性的程序。顶点着色器是逐顶点运算的程序,也就是说每个顶点数据都会执行一次顶点着⾊器,当然这是并行的,并且顶点着⾊器运算过程中无法访问其他顶点的数据

一般来说典型的需要计算的顶点属性主要包括顶点坐标变换、逐顶点光照运算等等。顶点坐标由自身坐标系转换到归⼀化坐标系的运算,就是在这里发生的。

顶点着色器的计算也是由GPU负责

图元装配

图元是三角形、直线或者点精灵等几何对象。图元的每个定点被发送到顶点着色器的不同拷贝。在图元装配期间,这些顶点被组合成图元。

光栅化 Rasterization

绘制对应的图元(点精灵、直线或者三角形)。将图元转化为一组二维片段的过程,然后这些片段由片段着色器处理。这些二维片段代表着可在屏幕绘制的像素。

片段着色器

也称之为片段着色器,像素着色器,对每个像素的显示进行处理,即一张图片,有很多像素点,每个像素点都需要经过片元着色器才能进行显示,所以需要大量计算,故使用GPU进行计算,而CPU擅长判断(基于单片机原理),这就是GPU的优势

⼀般用来处理图形中每个像素点颜色计算和填充

⽚段着色器是OpenGL中用于计算片段(像素)颜⾊的程序。⽚段着色器是逐像素运算的程序,也就是说每个像素都会执行⼀次片段着⾊器,当然也是并⾏的

另外GPU使用的是显存,内存是用于和CPU交互时使用

EGL

OpenGL ES和原生窗口系统之间的接口;在实现OpenGL ES时,没有提供EGL的硬性需求。需要根据方案商提供的文档确定支持的接口。

任何OpenGL ES应用渲染前必须使用EGL执行:

  • 查询并初始化设备可用的显示器
  • 创建渲染表面
  • 创建渲染上下文

EGL语法

方法都以egl前缀开头,EGL数据类型也以Egl前缀开始,对于组成类型名的美俄单词采用首字母大写(EGLint和EGLenum除外)。数据类型如下:

OpenGL ES 命令语法

前缀以gl开始,gl后首字母大写glBindTexture。

数据类型以GL前缀开头

错误处理

GLenum      glGetError(void)
 

状态管理

渲染管线的每个阶段都有一个可以启用或者禁用的状态。初始化OpenGL ES 上下文(EGLContext)时,状态默认值初始化。除了GL_DITHER被设置为GL_TRUE之外,其他功能的初始化值均被设置为GL_FALSE。

void        glEnable(GLenum cap)   //启用
void        glDisable(GlLenum cap) //禁用
GLboolean   glisEnabled(GLenum cap)//查询禁用状态
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值