是?个跨编程语?、跨平台的编程图形程序接?,它将计算机的资源抽象称为?个个OpenGL的对象,对这些资源的操作抽象为?个个的OpenGL指令
是 OpenGL 三维图形 API 的?集,针对?机、PDA和游戏主机等嵌?式设备?设计,去除了许多不必要和性能较低的API接?。
Apple为游戏开发者推出了新的平台技术 Metal,该技术能够为 3D 图像提? 10 倍的渲染性能.Metal 是Apple为了解决3D渲染?推出的框架
注:冲上面的概念可以知道用于手机端开发的只有OpenGL ES 和Metal(只用在苹果手机),但是又因为OpenGL ES其实就是OpenGL的子集,所以对于手机开发者来说主要学会OpenGL OpenGL ES Metal就行(Android可以不学习Metal)
将图形、图像转换成2D空间图像的操作叫做渲染。(平时我们看到的图片例如jpg、png都是压缩文件,解压之后图片是有很多歌像素点组成,然后解压之后还附带像素点的位置和像素点的颜色以及整个图片的顶点数组(见过专业摄影的人精修图图片其实就是在操作么个像素点,改变像素点的饱和度啊颜色啊,使照片效果更好)将这些像素点组成一张照片的过程就叫做渲染
画图?般是先画好图像的?架,然后再往?架??填充颜?,这对于OpenGL也是?样的。顶点数据就是要画的图像的?架,和现实中不同的是,OpenGL中的图像都是由图元组成。在OpenGL ES中,有3种类型的图元:点、线、三?形。那这些顶点数据最终是存储在哪?的呢?开发者可以选择设定函数指针,在调?绘制?法的时候,直接由内存传?顶点数据,也就是说这部分数据之前是存储在内存当中的,被称为顶点数组。?性能更?的做法是,提前分配?块显存,将顶点数据预先传?到显存当 中。这部分的显存,就被称为顶点缓冲区
在OpenGL 下渲染图形,就会有经历?个?个节点.?这样的操作可以理解管线.?家可以想象成流?线.每个任务类似流?线般执?.任务之间有先后顺序. 管线是?个抽象的概念,之所以称之为管线是因为显卡在处理数据的时候是按照?个固定的顺序来的,?且严格按照这个顺序。就像?从?根管?的?端流到另?端,这个顺序是不能打破的
在早期的OpenGL 版本,它封装了很多种着?器程序块内置的?段包含了光照、坐标变换、裁剪等等诸多功能的固定shader程序来完成,来帮助开发者来完成图形的渲染. ?开发者只需要传?相应的参数,就能快速完成图形的渲染. 类似于iOS开发会封装很多API,?我们只需要调?,就可以实现功能.不需要关注底层实现原理。但是由于OpenGL 的使?场景?常丰富,固定管线或存储着?器?法完成每?个业务.这时将相关部分开放成可编程
?般?来处理图形中每个像素点颜?计算和填充
?段着?器是OpenGL中?于计算?段(像素)颜?的程序。?段着?器是逐像素运算的程序,也就是说每个像素都会执??次?段着?器,当然也是并?的
固定着色器
自定义着色器
OpenGL着?语?(OpenGL Shading Language)是?来在OpenGL中着?编程的语?,也即开发?员写的短?的?定义程序,他们是在图形卡的GPU (Graphic Processor Unit图形处理单元)上执?的,代替了固定的渲染管线的?部分,使渲染管线中不同层次具有可编程性。?如:视图转换、投影转换等。GLSL(GL Shading Language)的着?器代码分成2个部分:Vertex Shader(顶点着?器)和Fragment(?元着?器)
纹理可以理解为图?. ?家在渲染图形时需要在其编码填充图?,为了使得场景更加逼真.?这?使?的图?,就是常说的纹理.但是在OpenGL,我们更加习惯叫纹理,?不是图?.
在测试阶段之后,如果像素依然没有被剔除,那么像素的颜?将会和帧缓冲区中颜?附着上的颜?进?混合,混合的算法可以通过OpenGL的函数进?指定。但是OpenGL提供的混合算法是有限的,如果需要更加复杂的混合算法,?般可以通过像素着?器进?实现,当然性能会?原?的混合算法差?些.
例如图形想发?平移,缩放,旋转变换.就需要使?变换矩阵.
?于将3D坐标转换为?维屏幕坐标,实际线条也将在?维坐标下进?绘制
原文:https://www.cnblogs.com/en815/p/13229138.html