OpenGL专业名词解析

2020-07-02  本文已影响0人  奉灬孝

OpenGL是一种用于创建实时3D图像的编程接口,是图形硬件的软件接口,基本上是一种底层渲染API,我们需要自己动手,通过载入三角形,应用必要的变换和正确的纹理、着色器并在必要时应用混合模式来组合一个模型。实现了我们通常所说的渲染管线(redering pipeline),它是一系列数据处理过程,并将应用程序的数据转换到最终渲染的图像。OpenGL规范包含GLSL,即OpenGL着色语言,这实际上是一种非常类似于C语言的程序设计语言。

OpenGL上下文
OpenGL状态机

OpenGL状态机是一个抽象的模型,表示一组状态变量的集合.OpenGL使用状态机来追踪所有的OpenGL状态变量。当一个状态值被设置之后,它就一直保持这个状态,直到其他函数对它进行修改为止.许多状态只能简单的打开或关闭。例如:深度测试就是要么打开、要么关闭。但是,并不是所有的状态变量都只是简单地打开或关闭。许多OpenGL函数专门用于设置变量的值,此后这些变量一直保持被设置时的值,直到再次被修改。因此具有以下特点:

渲染

将数学和图形数据转换成3D空间图像的操作叫做渲染

顶点数组 [VertexArray] 和 顶点缓冲区 [VertexBuffer]
着色器渲染过程

在渲染过程中,必须存储2种着色器:顶点着色器和片元着色器。顶点着色器是第一个着色器、片元着色器是最后一个。顶点着色器处理顶点数据,片元着色器处理像素点颜色。
顶点着色(包括细分着色和几何着色)决定了一个图元应该位于屏幕的什么位置,而片元着色使用这些信息来决定某个片元的颜色应该是什么

着色器渲染过程
着色器程序Shader
管线

OpenGL下渲染图形,就会有经历⼀个一个节点.而这样的操作可以理解管线。大家可以想象成流⽔水线。每个任务类似流水线般执行。任务之间有先后顺序.。管线是一个抽象的概念,之所以称之为管线是因为显卡在处理数据的时候是按照 一个固定的顺序来的,而且严格按照这个顺序。就像水从⼀根管⼦子的一端流到 另一端,这个顺序是不能打破的。

固定管线/存储着色器
顶点着色器VertexShader
片元着色器FragmentShader
GLSL(OpenGL Shading Language)
光栅化
纹理

纹理可以理解为图片。大家在渲染图形时需要在其编码填充图片,为了使得场景更加逼真。而这里使用的图片,就是常说的纹理,但是在OpenGL,我们更加习惯叫纹理,而不是图片。

混合(Blending)
变换矩阵
投影矩阵

正投影:正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体。正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等平面图形方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。(图片绘制不管远近1:1进行绘制)
透视投影:透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失,成为灭点。它的视景体类似于一个顶部和底部都被切除掉的棱椎,也就是棱台。这个投影通常用于动画、视觉仿真以及其它许多具有真实性反映的方面。(远小近大效果,3D图形)

渲染上屏/交换缓冲区(SwapBuffer)
窗口和视口:

首先,视口坐标是表示物理坐标的,窗口坐标是表示逻辑坐标的,并且,任何时候视口坐标和窗口坐标都是一一对应的(即:左上角坐标和右下角坐标是一一对应的)。比如:设置视口坐标(0,0,50,50)(表示:(左上角X,左上角X,宽度,高度)),设置窗口坐标为(-100,-100,100,100),那么,窗口坐标(-100,-100)对应视口坐标(0,0),窗口坐标(0,0)对应视口坐标(50,50),第二,在我们绘制图形或文字时,是以逻辑坐标为参考的。所以,只要记住,这两点就应该能理解坐标系统了,实际上就是个坐标的转换,当然,最终的图形显示实际都会变换为对应的视口坐标来显示.我们在放大图形时只需要重新设置更大区域的视口坐标(物理坐标),而不需要改变任何的程序代码,缩小也是同样的道理。

上一篇 下一篇

猜你喜欢

热点阅读