OpenGL ES 2.0是OpenGL三维图形API的子集,针对手机、PAD和游戏主机等嵌入式设备设计,而小编带来的OpenGL ES 2.0是其2.0版本,这一版本主要针对可编程管线硬件,参照OpenGL 2.0的规范定义的。OpenGL ES 2.0是一个定义了跨编程语言、跨平台的编程接口的规格,用于三维图像,也就是说小编带来的这个东西其实并不是软件,而是一个功能强大的方便调用的底层图形库。
OpenGL ES 2.0具有免费,跨平台等特点,功能完善的2D和3D图形应用程序接口API能够针对多种嵌入式系统做出专门设计,包括移动电话、手持设备、家电设备等等如果用户为一些手机、游戏机等嵌入式设备做开发,那么这个OpenGL ES 2.0是必不可少的。
- 支持iPad, iPhone3GS 和后续版本,以及iPodTouch3代和后续版本。
- 支持Android平台从Android 2.2版本开始。
- 支持Android NDK从Android 2.0版本开始。
- 支持BlackBerryPlayBook黑莓。
- 支持Pandora潘多拉控制台的3D库。
- 被WebGL支持:浏览器支持OpenGL
- 支持少数新款Nokia诺基亚手机,比如N900上的Maemo和N8上的Symbian3塞班3系统。
- 支持多款三星手机,包括Galaxy S和Wave。
- 使用开发插件可以支持Palm webOS。
- 支持Archos 爱可视上网本:70 IT, 101 IT
大大提高不同消费电子设备的3D图形渲染速度;
在嵌入式系统上实现了全面可编程的3D图形;
把三维空间中的对象通过投影、光栅化转换为二维图像,然后呈现到屏幕上。
1、Shader(就是一段程序Program)
Shader是一段执行在GPU上的程序(所以Shader也可以叫做Program),此程序使用OpenGL ES SL语言来编写。它是一个描述顶点或像素特性的简单程序。
- 1.1Pixel Shader
Pixel Shader(像素着色器)就是众所周知的Fragment Shader,它计算每个像素的颜色和其它属性。它通过应用光照值、凹凸贴图,阴影,镜面高光,半透明等处理来计算像素的颜色并输出。它也可改变像素的深度(z-buffering)或在多个渲染目标被激活的状态下输出多种颜色。一个Pixel Shader不能产生复杂的效果,因为它只在一个像素上进行操作,而不知道场景的几何形状。
- 1.2 Vertex Shader
对于发送给GPU的每一个Vertex(顶点),都要执行一次Vertex Shader(顶点着色器)。其功能是把每个顶点在虚拟空间中的三维坐标变换为可以在屏幕上显示的二维坐标,并带有用于z-buffer的深度信息。Vertex Shader可以操作的属性有:位置、颜色、纹理坐标,但是不能创建新的顶点。
Vertex Shader输入数据如下:
1)Attributes: 通过顶点数组(vertex arrays)提供的每个顶点数据
2)Uniforms: Vertex Shader使用的常量数据
3)Samplers: Vertex Shader使用的一个表示纹理类型的Uniforms,在Vertex Shader中是可选的
4)Shader program: Vertex Shader程序源码或可执行文件,它描述了将在顶点上执行的操作
Vertex Shader输出为:varying variables(Vertex Shader的输出变量,作为Fragment Shader的输入。必须与Fragment Shader中的输入Varying一一对应。)
gl_Position: 是每个点固有的Varying,表示点的空间位置。
- 1.3 Geometry Shader
Geometry Shader是一个相对新的Shader类型。它在Driect3D 10和OpenGL 3.2中开始引入,在OpengGL 2.0+中作为扩展使用。它的输入为:点、线和三角形;其输出为点、线带和三角形带。
2、Shading Language
Shading Language仅适合于为GPU编程,编程工具为Cg(Nvidia开发),Cg编译器可以输出Direct3X或OpenGL Shader程序。
3、Shading 算法
- 3.1 插值技术(可以和任何照明模型组合):
Flat shading
Gouraud shading
Phong shading
- 3.2 照明模型 (可以和任何插值技术组合):
Blinn–Phong
Cook–Torrance (microfacets)
Lambert
Minnaert
Oren–Nayar (Rough opaque diffuse surfaces)
Phong
Ward anisotropic
4、原语汇编(Primitive Assembly)
在管道(pipeline)中,执行完Vertex Shader之后,就执行原语汇编。一个原语(primitive)就是一个可以使用OpenGL ES画图命令进行绘制的几何对象。
在原语汇编阶段,被Vertex Shader处理输出的顶点被组合进行一个单独可被绘制的几何原语(如:点、线和三角形)。然后对几何原语执行以下两种操作:
Clipping(裁剪): 只保留在可视空间范围内的原语
Culling(选择): 基于面向前或后,进行原语的选择
在裁剪和选择之后,其下一个阶段为进行Geometry Shader(如果存在)或光栅化处理。
5、光栅(Rasterization)
光栅处理的目标:把原语转换为一系列二维fragments,这些二维fragments将被Fragment Shader处理,且这些二维fragments表示可被绘制在屏幕上的像素。
6、 Fragment Shader
对每个光栅化产生的fragment执行一次Fragment Shader,其输入内容如下:
Varying variables:Vertex Shader的输出,且由光栅化单元对每个fragment使用插值方法产生
Uniforms:Fragment Shader使用的常量数据
Samplers:一个表示纹理的常量数据
Shader program:Fragment shader程序源码或可执行文件,它描述了将在fragment上执行的操作。
展开内容
9.0/2.42M
MTPuTTY(终端调试工具)是一个开源的PuTTY会话管理工具,它提供了多标签页支持、会话管理、自动登录、密钥管理、参数配置和快捷方式等功能,旨在帮助用户更高效地管理和连接多个PuTTY会话。
9.3/5.34M
DeDeDark(Delphi反编译工具)是一款十分实用的编程工具,它有着简体中文的操作界面,能够支持用户快速对delphi进行反编译处理,处理后,所有的目标dfm文件,可以进行编辑,但源代码还是会以asm形式显示。
9.1/1.1M
Pestudio官方版是一款绿色小巧、功能强大、使用方便的编程辅助应用程序代码验证工具。其主要功能是帮助用户一键获取并验证应用程序的相关信息,如:是否具备64位处理能力、是否过时、是否存在潜在安全风险、验证应用所需使用的.Net信息、验证MD5等等!
Adobe ExtendScript Toolkit CC中文版
9.0/93.47M
Adobe ExtendScript Toolkit CC中文版是一个集成开发环境(IDE),主要用于编写和调试 Adobe 应用程序的 JavaScript 脚本,也称为 ExtendScript 脚本。
查看
查看
查看
查看
查看
8.8/4.06M
DBF Viewer 2000 是强大、简洁和易用的DBF(Clipper,dBase,FoxBase,Foxpro,Visual Foxpro,Visual DBase,VO,DB2K)文件浏览器和编辑器。
查看
9.1/2.99M
Hutool工具包是一个Java工具集,软件类似于jodd和Apache commons lang的Java工具类。Hutool工具包对文件、流、加密解密、转码、正则、线程、XML、日期、Http客户端 等 JDK 方法进行封装,组成各种 Util 工具类。
查看
9.1/41.97M
ASP.NET Maker 2019是一款功能强大的ASP.NET自动化代码生成工具。它将生成一个列表页面,添加/copypage,查看页面,编辑页面,删除页面和搜索页面所有链接的upproperly。
查看
9.0/1.18M
使用PHP进行开发需要许多工具来帮助用户来进行管理代码,这款composer就是一款非常不错的全球知名的PHP依赖管理工具,是许多网页开发用户需要用到的管理工具。软件允许用户申明项目所以来的代码库,然后他就会在你的项目中帮助你安装他们,比如一些框架,像是laravel这一类的PH
9.1/3.77M
WP Rocket是一款非常高效最灵活的WordPress静态缓存插件,主要用于页面缓存、静态文件优化,缓存预加载、调整缓存规则等。可以优化你的JS CSS文件结构减少多次请求达到优化速度的目的,还集成了图片延迟加载对最求极致加速的用户不错的选择,通过使用这个插件,能让你的Wor
查看
查看