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

    文章

    88

    浏览量

    30733
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    晶振电子元件基本术语

    的应用。常用名词术语标称频率晶体元件技术规范中规定的频率,通常标识在产品外壳上,它与晶体元件的实际工作频率有一定的差值。工作频率晶体元件与其电路一起产生的振荡频率。调整频
    的头像 发表于 04-08 08:39 151次阅读
    晶振电子元件基本<b class='flag-5'>术语</b>

    别再被晶振术语绕晕!大白话版解读来了

    想要深入了解一个行业,吃透其核心产品的专业术语是关键一步,石英晶振领域也不例外。掌握这些术语,能让晶振的采购与选型工作事半功倍。下面就为大家逐一解读石英晶振的核心专业术语:一、频率相关术语
    的头像 发表于 03-30 09:06 240次阅读
    别再被晶振<b class='flag-5'>术语</b>绕晕!大白话版解读来了

    PowerVR:推动开源 Zink 与 OpenGL ES 支持的发展路径

    ://docs.mesa3d.org/drivers/zink.htmlZink解决了通过Vulkan运行OpenGL和OpenGLES应用的问题。它是一种转换层,不针对
    的头像 发表于 03-18 10:05 545次阅读
    PowerVR:推动开源 Zink 与 <b class='flag-5'>OpenGL</b> ES 支持的发展路径

    硬件工程师必备!晶振术语中英文对照速查表,收藏这一篇就够了

    在阅读芯片数据手册、国际技术文档或与海外供应商沟通时,你是否曾被一堆晶振的专业术语缩写搞得晕头转向? OCXO、TCXO、Aging、Jitter...这些词到底是什么意思?今天,我们为你整理了一份超全的晶体振荡器常用术语中英文
    的头像 发表于 02-02 15:22 804次阅读
    硬件工程师必备!晶振<b class='flag-5'>术语</b>中英文对照速查表,收藏这一篇就够了

    SMT贴片加工必备术语手册:49个常用名词及其详细定义

    (Laser Cutting): 使用激光技术进行切割,通常用于裁剪PCB板形状或切割金属薄片。 “SMT贴片加工里的这些术语,每个都是关键‘技能点’。工程师熟悉它们,就像掌握了‘防错料’的‘火眼金睛
    发表于 01-27 11:14

    机器视觉系统中光源的相关行业术语解读

    产品资料查询平台下面我们来看看工业光源在业内的常用术语解析。1.明场照明brightfieldillumination光线从物体表面的主要部分反射或透射到成像系统中
    的头像 发表于 12-16 17:30 704次阅读
    机器视觉系统中光源的相关行业<b class='flag-5'>术语</b>解读

    Labview 解析dxf文件并显示

    上一期开了一个帖子讲Labview导入dxf文件,解析和显示dxf文件,今天继续继续分享常用图元的解析与显示方法。 LINE :用文本方式打开dxf 文件,搜索出直线部分,并摘取,可以得到
    发表于 12-01 11:28

    Labview 解析dxf文件并显示<一>

    /WSfacf1429558a55de185c428100849a0ab7-5f35.htm 下图是我做的一个文件解析,涵盖了常用的一些图元对象,有单线段、多段线、表格、文字、标注、云线、弧、标注、样条曲线
    发表于 11-14 22:45

    通俗易懂的晶振专业术语

    想要了解一个行业,就要对其产品的术语要有所了解,各行各业都要自己专业术语,石英晶振也不例外;了解晶振术语对晶振采购和选型有很大帮助;下面小扬给大家简单的解释晶振术语都代表什么意思:
    的头像 发表于 09-18 11:31 2118次阅读
    通俗易懂的晶振专业<b class='flag-5'>术语</b>

    浅谈数字芯片的常用术语

    解释: 这是数字芯片设计永恒的“铁三角”。Power指芯片功耗,越低越好;Performance通常指芯片能跑多快(频率),越高越好;Area指芯片的面积,越小成本越低。
    的头像 发表于 08-19 16:36 1922次阅读

    IEC 62353中常用术语和定义

    本文详细解读IEC 62353标准中的关键术语,包括被测设备(DUT/EUT)、应用部分(B/BF/CF型)、泄漏电流、微电击与宏电击等定义,帮助理解医疗电气设备安全测试要求。
    的头像 发表于 07-29 17:27 849次阅读

    技术干货 | 从偏移误差到电源抑制比,DAC核心术语解析

    偏移误差、增益误差、INL/DNL、转换时间……这些关键指标如何定义?如何影响DAC性能?本文DAC核心术语解析带您一文掌握关键参数!
    的头像 发表于 06-19 10:38 742次阅读
    技术干货 | 从偏移误差到电源抑制比,DAC核心<b class='flag-5'>术语</b>全<b class='flag-5'>解析</b>

    从偏移误差到电源抑制比,DAC核心术语解析

    本文介绍了DAC术语,包括偏移误差、满刻度误差、增益误差、积分非线性误差、差分非线性误差、未调整总误差等,并对转换延迟、转换时间、差分非线性误差、端点和最佳拟合线增益误差、单调性、乘法型DAC、电源抑制比等进行了详细说明。
    的头像 发表于 06-17 11:31 820次阅读
    从偏移误差到电源抑制比,DAC核心<b class='flag-5'>术语</b>全<b class='flag-5'>解析</b>

    NS-ZJB型变压器中性点间隙接地保护成套装置的常用电子元器件及功能解析

    NS-ZJB型变压器中性点间隙接地保护成套装置的常用电子元器件及功能解析
    的头像 发表于 06-16 15:10 1507次阅读

    技术干货 | 功能安全术语的暗黑森林

    在汽车产业高度发展的当下,功能安全已从抽象概念转化为系统性防控要求。ISO26262定义的核心术语正是突破概念模糊性的首道门槛——既是工程师协同的技术语言,也是实现安全出行的底层方法论。今天我们就来
    的头像 发表于 06-10 16:38 2248次阅读
    技术干货 | 功能安全<b class='flag-5'>术语</b>的暗黑森林