OpenGL常见专业名词理解

总结对OpenGL 专业名词的理解,我觉得需要精简实用而不纠结细节

OpenGL Context (上下文)

context 上下文就是个状态机。 A context stores all of the state associated with this instance of OpenGL.

Render(渲染)

Render(渲染) 从2D和3D模型数据显示到屏幕的过程。具体就是图片/按钮/视频数据显示绘制到屏幕过程,图片解码后还原为位图数据后进行。Render is the automatic process of generating a photorealistic or non-photorealistic image from a 2D or 3D model by means of a computer program.

顶点数组(Vertex array)

顶点数组(Vertex array) 将顶点数据存储在一组数组中,包括顶点位置、法线、纹理坐标和颜色信息。顶点数组数据会在渲染前,加载到内存当中。store vertex data in a set of arrays including vertex positions, normals, texture coordinates and color information. 

顶点缓冲区(Vertex buffer)

顶点缓冲区(Vertex buffer)  将顶点数组缓存到GPU 显存的一个缓存区。相比顶点数组从CPU请求到内存的过程,顶点缓冲区数据能直接被GPU获取。

位图(bitmap)

位图就是未经压缩的图像,是像素点的集合。位图像素点如果通过RGBA 表示,每个像素点占4个字节的数据。假设一张位图为120像素宽X120像素高,像素点数量等于120*120=14400个像素点,每个像素点占4字节(RGBA 颜色和透明通道各占1字节,1字节=8bit).位图大小等于像素点个数x4字节=14400*4。

渲染管线(Render Pipeline)

渲染管线是OpenGL在渲染对象时所采取的一系列步骤。

The Rendering Pipeline is the sequence of steps that OpenGL takes when rendering objects. 

渲染管线分为固定渲染管线可编程渲染管线

固定管线对应着多个固定着色器,通过一系列固定着色器完成渲染结果。

可编程渲染管线,就是对管线中自定义着色器通过自定义编程规模(GLSL语法来驱使GPU)进行渲染。

着色器(shaders)

着色器就是运行在GPU的小程序,分为固定着色器和自定义着色器。其中可自定义着色器只有顶点着色器和片元着色器。这些程序针对图形管道的每个特定部分运行。从基本意义上讲,着色器只不过是将输入转换为输出的程序。着色器也是非常孤立的程序,因为它们不允许彼此通信;它们唯一的通信是通过它们的输入和输出。

shaders are little programs that rest on the GPU. These programs are run for each specific section of the graphics pipeline. In a basic sense, shaders are nothing more than programs transforming inputs to outputs. Shaders are also very isolated programs in that they're not allowed to communicate with each other; the only communication they have is via their inputs and outputs.

顶点着色器作用:1.确定位置 2.缩放/平移/旋转位置换算 3.手机端显示3D手机屏幕实际2D 3D图形数据->2D(投影换算)->OpenGL ES

片元着色器(像素着色点): 片元(像素点)着色器,处理一个一个像素点: 120*120 像素点 14400次 GPU 并行运算

不可以定制的着色器:几何着色器和细分着色器

GLSL:(OpenGL Shading Language)

是用来在OPENGL中着色编程的语言,也即开发人员写的短小的自定义程序,他们是在GPU (Graphic Processor Unit图形处理单元)上执行的,代替了固定的渲染管线的一部分,使渲染管线中不同层次具有可编程性。GLSL定义处理过程:自定义着色器->代码(语言) OpenGL标准调用GPU来计算。

离屏渲染(offscreen rendering)

是解决无法把渲染结果直接写入frame buffer,而是先暂存在另外的内存区域,之后再写入frame buffer,那么这个过程被称之为离屏渲染。

光栅化(rasterization)

个人理解就是把数据像素点显示到对象屏幕窗口到位置。

当渲染点时,OpenGL使用一组称为光栅化规则的规则来确定点覆盖的像素。在OpenGL中栅格化一个点的规则非常简单——如果一个样本落在一个以该点在窗口坐标中的位置为中心的正方形内,则认为该样本被一个点覆盖。

When rendering points, OpenGL determines which pixels are covered bythe point using a set of rules called rasterization rules. The rules forrasterizing a point in OpenGL are quite straightforward—a sample isconsidered covered by a point if it falls within a square centered on thepoint’s location in window coordinates.

纹理:(texture)

个人理解纹理(texture)就是要渲染的图片对象。纹理是一个OpenGL对象,它包含一个或多个具有相同图像格式的图像。纹理可以用两种方式使用:它可以是从着色器访问纹理的源,也可以用作渲染目标。A texture is an OpenGL object that contains one or more images that all have the same image format.A texture can be used in two ways: it can be the source of a texture access from a Shader, or it can be used as a render target.

混合:(blend)

个人理解:混合可以把两个叠加的图像颜色进行颜色混合计算,把计算结果显示出来。

矩阵变换(Transformation matrix)

个人理解:矩阵变换(Transformation matrix)可以把一原始数组数据与变化计算的矩阵数组进行计算得出变换后的结果数组。在数学上属于线性规划上的计算,从编程的角度属于3D数学。

投影矩阵(Projection matrix)

个人理解就是:把图像数据点投影到屏幕前按坐标系进行变换计算,计算得出矩阵结果。其中投影分2D图像投影和3D图像投影。一般2D图像使用正投影,3D图像使用透视投影具有远近效果。正投影图像中的物体没有远近之分,透视投影会受观察者视觉点影响,物体有远近之分。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。