0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenGL的常用术语解析

电子设计 来源:电子设计 作者:电子设计 2021-01-20 23:52 次阅读

1. 什么是OpenGL

OpenGL是一个跨语言、跨平台的编程图形程序接口,它将计算机的资源抽象为一个个的OpenGL的对象,对这些资源的操作抽象为一个个OpenGL的指令。它的移植性高,并且速度非常快。

2. OpenGL状态机

状态机是一种抽象的模型,表示一组状态变量的集合。它描述了一个对象在其生命周期内所经历的各种状态,状态之间的转变,发生转变的动因、条件以及转变中所执行的活动。

比如:颜色、纹理坐标、源因子和目标因子、光源的各种参数,这些都是状态,另外还有:是否开启了光照,是否开启了纹理,是否开启了混合,是否开启了深度测试等等。OpenGL会保持这些状态,除非我们调用函数来改变这些状态。

3. OpenGL上下文

OpenGL上下文是一个非常抽象的概念,可以理解为一个包含了所有OpenGL状态的对象。在我们调用任何OpenGL指令前,都需要先创建一个上下文,这个上下文记录了OpenGL渲染所需要的所有信息以及状态,所以上下文也是一个庞大的状态机。

4. 渲染

所谓的渲染,就是将数学和图形数据转换成3D空间图像的操作叫做渲染(Rendering)。

5. 管线

在OpenGL中,3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程)管理的。

图形渲染管线可以被划分为两个主要部分:
(1)第一部分把你的3D坐标转换为2D坐标。
(2)第二部分是把2D坐标转变为实际的有颜色的像素。

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

6. 固定管线/存储着色器

OpenGL自身为开发者封装了很多着色器(shader)程序,开发者只需要调用API即可,不需要关心内部的实现过程,而这些封装好的程序(函数或方法)即为固定管线。

在固定管线下,使用固定存储着色器,固定存储着⾊器由GLTools的C++类GLShaderManager管理,它们能够满⾜进⾏基本渲染的基本要求。

但是由于OpenGL 的使用场景非常丰富,固定管线或存储着色器无法完成每一个业务,这时将相关部分开放成可编程。

7. 着色器程序(Shader)

顾名思义,着色器程序就是一个程序代码,在OpenGL调用绘制函数之前,需要制定一个着色器,在固定管线下,这个着色器已经是封装好的了,在可编程的情况下,则需要程序员自己编写着色器程序。

常见的着色器有:

顶点着色器 (VertexShader)

片元着色器(FragmentShader)/像素着色器 (PixelShader)

几何着色器

曲面细分着色器

在 OpenGL ES 3.0后,可编程依然只支持了顶点着色器和片段着色器这两个最基础的着色器。

7.1 顶点着色器(VertexShader)

顶点着色器是一组指令代码,这组指令代码在顶点被渲染时执行,一般用来处理图形每个顶点变换(旋转/平移/投影等)。

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

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

7.2 片元着色器(FragmentShader)

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

片段着色器是OpenGL中用于计算片段(像素)颜色的程序。片段着色器是逐像素运算的程序,也就是说每个像素都会执行一次片段着色器,这个过程也是并行的。

7.3 着色器渲染过程

pIYBAGAIUG-AVD8xAALQLlPM7N4820.png

8. 光栅化(Rasterrization)

又名栅格化或者像素化,其实就是把矢量图转化成像素点的过程。

我们都知道三维物体是由点线面构成的,将这些点线面转化成屏幕上的像素点,这个过程就是光栅化。

该过程包括了两部分工作:

决定窗口坐标中哪些整型栅格区域被基本图元占用;

分配一个颜色值和一个深度值到各个区域。

光栅化过程产生的是片元。

9. 纹理(texture)

在OpenGL中,我们所说的纹理可以理解成是一张图片,在渲染图形的时候,需要将图片贴在其表面,使其看起来更逼真。

10. 混合(Blending)

混合就是将源色和目标颜色通过某种方式混合生成特效的技术,通俗一点就是将两种颜色通过某种算法生成特殊的效果。混合通常用来绘制透明或者半透明的物体。

11. 变换矩阵(Transformation)

如果图形想发生平移、缩放、旋转变换,就需要使用变换矩阵。

12. 投影矩阵(Projection)

用于将3D坐标转换为二维屏幕坐标,实际线条也将在二维坐标下进行绘制。

13. 2D笛卡尔坐标系

pIYBAGAIUK6AYY1YAAEtUI4xnME254.png

14. 3D笛卡尔坐标系

o4YBAGAIUO2AbrOGAAG1DuEOHuY481.png

15. 视口

o4YBAGAIUTaAQhXhAAJreUseY6E398.png

pIYBAGAIUXeAReXFAAJA1G4q-wU126.png

16. 投影方式

在OpenGL中,主要有两种投影方式,第一种是正投影或叫平行投影,第二种是透视投影。

在使用正投影的时候,需要准备一个正方形或者长方形的视景体(屏幕)。视景体之外的任何物体都不会被绘制,而是所有实际物体的大小和视景体内的大小都相同,无论远近。

在使用透视投影的时候,远处的物体看上去会比近处的物体小一些,符合近大远小的原理。越靠近视景体,投影越接近物体尺寸,反之,越远,则越小于物体本身的尺寸。

o4YBAGAIUdeAcXDUAApBpBnnchQ221.png

来源:电子创新网

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OpenGL
    +关注

    关注

    1

    文章

    84

    浏览量

    29026
收藏 人收藏

    评论

    相关推荐

    如何获取STM32MP157的嵌入式Linux的OpenGL库?

    请问,如何获取STM32MP157的嵌入式Linux的OpenGL库?
    发表于 03-15 07:21

    电能质量标准中常用术语和定义的解读(三)

    电能质量标准中常用术语和定义的解读:10、RMS事件源扰动方向的定位对识别故障源和方向至关重要。暂降源方向可以通过监测电压和电流之间的关系来确定。德国GMC-I集团的高美测仪MAVOWATT230
    的头像 发表于 02-26 17:06 156次阅读

    电能质量标准中常用术语和定义的解读

    电能质量标准术语大揭秘,从PU到谐波源阻抗,一网打尽!电压暂降、谐波幅值,轻松搞定!
    的头像 发表于 01-15 11:44 278次阅读
    电能质量标准中<b class='flag-5'>常用</b><b class='flag-5'>术语</b>和定义的解读

    SMT贴片加工常见的专业术语分享

    一站式PCBA智造厂家今天为大家讲讲SMT贴片加工有哪些常用的专业术语?SMT贴片加工常见的专业术语。SMT是表面组装技术(表面贴装技术),是目前电子组装行业里流行的一种技术和工艺,具有组装密度
    的头像 发表于 01-09 09:08 285次阅读

    物联网领域的关键术语

    物联网领域有许多关键术语和缩写词。我列出了一些常见术语。由于物联网的范围极广,因此我无法在本帖中列出所有术语。请在此列表中添加任何可能对他人有益的术语
    的头像 发表于 12-28 09:40 323次阅读

    半导体行业术语的解读

    在探讨半导体业界的常用术语前,我们需了解半导体行业是科技领域中最为活跃且技术含量极高的行业之一。它涉及到许多复杂的工艺和理论,因此产生了大量专业术语。以下是一些半导体业界常用
    的头像 发表于 12-02 11:18 1471次阅读
    半导体行业<b class='flag-5'>术语</b>的解读

    先进封装基本术语

    先进封装基本术语
    的头像 发表于 11-24 14:53 413次阅读
    先进封装基本<b class='flag-5'>术语</b>

    直线导轨的常用术语你知道多少?

    直线导轨的常用术语你知道多少?
    的头像 发表于 09-02 17:39 585次阅读
    直线导轨的<b class='flag-5'>常用</b><b class='flag-5'>术语</b>你知道多少?

    Mali GPU OpenGL ES应用程序开发指南

    这是适用于马里GPU的OpenGL ES应用程序开发指南。 它提供了使用OpenGL ES 1.1和OpenGL ES 2.0 API为马里GPU开发应用程序的指南。 本文档适用于马里GPU系列,即
    发表于 08-30 07:57

    Mali OpenGL ES 2.0 SDK for Android用户指南

    马里SDK是一个资源集合,帮助您为马里GPU平台构建OpenGL ES 2.0应用程序。 您可以使用它来创建新的应用程序、培训和探索实现的可能性。 马里SDK运行在以下平台上: ·Microsoft
    发表于 08-18 06:45

    仪器仪表常用的专业术语,建议收藏

    仪器仪表常用的专业术语01范围range由上、下限所限定的一个量的区间。注:"范围"通常加修饰语。例如:测量范围,标度范围。它可适用于被测量或工作条件等。02测量范围
    的头像 发表于 08-10 08:09 607次阅读
    仪器仪表<b class='flag-5'>常用</b>的专业<b class='flag-5'>术语</b>,建议收藏

    Arm OpenGL ES 3.0开发者指南

    OpenGL ES 3.0是对OpenGL ES 2.0标准的增强。 OpenGL ES 3.0添加了OpenGL 3.x中已有的功能。其他Open
    发表于 08-08 06:03

    如何获取STM32MP157的嵌入式Linux的OpenGL库?

    请问,如何获取STM32MP157的嵌入式Linux的OpenGL库?
    发表于 08-05 06:06

    Imagination GPU 现支持 OpenGL® 4.6

    在API方面,OpenGL 堪称经典。据Khronos Group称,OpenGL 是最广泛采用的 2D 和 3D 图形 API。自 1992 年推出以来,它已被 PC 和工作站的软件开发人员广泛
    的头像 发表于 07-17 09:25 501次阅读
    Imagination GPU 现支持 <b class='flag-5'>OpenGL</b>® 4.6

    100个数字IC设计中常用的缩写或术语

    下面为大家收集了100个数字IC设计中常用的缩写或术语,供大家参考,为初学者门的学习添砖加瓦。
    发表于 06-20 12:43 662次阅读