OpenGL开发过程中必备的专业名词解析

本文深入解析OpenGL渲染管线,涵盖状态机、上下文管理、顶点数组、着色器、光栅化、纹理处理、混合技术及变换矩阵等内容,阐述如何高效利用OpenGL进行图形渲染。
  • 状态机

是理论上的一种机器,状态机描述了一个对象在其生命中所经历的各种状态状态机的转变,发生转变的动因、条件及抓岸边中所执行的活动,它具有以下特点:

  • 记忆功能,能记住其当前状态
  • 可以接受输入,根据输入内容和原先状态,修改当前状态,并且可以有对应的输出
  • 当进入特殊状态(停机状态)的时候,就怒再接收收入,停止工作。
  • 上下文(context)`
  • 上下文就是个非常庞大的状态机,保存了OpenGL的各种状态,这是OpenGL指令执行的基础
  • OpenGL函数是面向过程的函数,本质是对上下文这个状态机的某个状态或者对象进行操作,通过对OpenGL指令的封装,是可以将Openg的相关调用封装成为一个面向对象的图形API的
  • 由于OpenGL上下文是一个巨⼤大的状态机,切换上下⽂往往会产⽣生较大的开 销,但是不同的绘制模块,可能需要使⽤完全独立的状态管理理。因此,可以在应用程序中分别创建多个不同的上下文,在不不同线程中使⽤不同的上下文,上下文之间共享纹理、缓冲区等资源。这样⽅方案,会⽐比反复切换 上下文,或者⼤量修改渲染状态,更加合理高效的.
  • 渲染(Rendering)

将图形/图像数据转换成2D空间图像操作叫做渲染

  • 顶点数组

顶点是绘制图形的顶点位置数据,这个数据可以存储在数组中,就是顶点数组。顶点数组是存储在内存中的。
相对于顶点数组,性能更高的做法是提前分配一块显存,将顶点数据预先传入到显存中,这部分的显存被称为顶点缓冲区

  • 管线

在OpenGL下渲染图形,会经过一个一个节点,这样的操作就可以理解为管线。就相当于流水线。管线是按照固定顺序执行的,顺序不可以打破,严格按照顺序
固定管线:系统封装的内置的固定着色器程序,只需要传入参数,就能快速的完成渲染

  • 着色器(shader)

在函数绘制之前,需要指定一个由shader编译成的着色器程序,常见的着色器有

  • 顶点着色器(VertexShader)
    用于计算顶点属性的程序,一般用来处理图形顶点变换(旋转、平移、投影等),逐顶点运 算,并行执行
  • 片元着色器(FragmentShader,片段着色器或者像素着色器不同叫法而已)
    用于处理图形的每个像素点的程序,包括颜色计算和填充,逐像素运算,是并行的
  • 几何着色器
  • 曲面细分着色器
  • GLSL(OpenGL Shading Language)

OpenGL中着色编程的语言,他们是在图形卡的GPU (Graphic Processor Unit图形处理理单元)上执⾏行。程序员可使用这个自定义着色器,⽐如:视图转换、投 影转换等。

  • 光栅化 (Rasterization)
  • 把物体的数学描述和相关的颜色信息转换为屏幕上用于对应位置的像素及用于填充像素的颜色的过程。
  • 主要目的是将几何渲染之后的图元信息转化为一系列的像素,以便后续在屏幕上显示。两个过程,第一部分:决定窗口坐标中的哪些整型栅格区域被基本图元占用;第二部分:分配一个颜色值和一个深度值到各个区域。光栅化过程产生的是片元
  • 纹理 (Texture)

可以理解为图片,在渲染图形时候在其编码填充图片,使场景更为逼真

  • 混合 (Blending)

像素没有被剔除。像素会和帧缓冲区颜色进行混合。可以理解为两个颜色重叠显示出来的混合颜色

  • 变换矩阵(Transformation)

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

  • 投影矩阵

将3D坐标转换为二维屏幕坐标时使用。投影方式有正投影和透视投影。正投影不会改变大小,透视投影会使远处的物体比近处投影的要小。

  • 渲染上屏/交换缓冲区(SwapBuffer)
  • 渲染缓冲区⼀般映射的是系统的资源⽐如窗口。如果将图像直接渲染到窗口对应的渲染缓冲区,则可以将图像显示到屏幕上。
  • 但是,值得注意的是,如果每个窗⼝只有一个缓冲区,那么在绘制过程中屏幕进行了刷新,窗口可能显示不出完整的图像
  • 为了解决这个问题,常规的OpenGL程序至少都会有两个缓冲区。显示在屏幕上的称为屏幕缓冲区,没有 显示的称为离屏缓冲区。在⼀个缓冲区渲染完成之后,通过将屏幕缓冲区和离屏缓冲区交换,实现图像在屏幕上的显示
  • 垂直同步: 由于显示器的刷新⼀般是逐行进行的,因此为了防止交换缓冲区的时候屏幕上下区域的图像分属于两个不同的帧,因此交换一般会等待显示器刷新完成的信号,在显示器两次刷新的间隔中进⾏行交换,这个信号就被称为垂直同步信号,这个技术被称为垂直同步
  • 三缓冲区技术:使⽤了双缓冲区和垂直同步技术之后,由于总是要等待缓冲区交换之后再进⾏下⼀帧的渲染,使得帧率⽆法完全达到硬件允许的最⾼⽔平。为了解决这个问题,引⼊了三缓冲区技术,在等待垂直同步时,来回交替渲染两个离屏的缓冲区,而垂直同步发⽣生时,屏幕缓冲区和最近渲染完成的离屏缓冲区交换,实现充分利⽤硬件性能的⽬的
复杂几何的多球近似MATLAB类及多球模型的比较 MATLAB类Approxi提供了一个框架,用于使用具有迭代缩放的聚集球体模型来近似解剖体积模型,以适应目标体积和模型比较。专为骨科、生物力学和计算几何应用而开发。 MATLAB class for multi-sphere approximation of complex geometries and comparison of multi-sphere models 主要特点: 球体模型生成 1.多球体模型生成:与Sihaeri的聚集球体算法的接口 2.音量缩放 基于体素的球体模型和参考几何体的交集。 迭代缩放球体模型以匹配目标体积。 3.模型比较:不同模型体素占用率的频率分析(多个评分指标) 4.几何分析:原始曲面模型和球体模型之间的顶点到最近邻距离映射(带颜色编码结果)。 如何使用: 1.代码结构:Approxi类可以集成到相应的主脚本中。代码的关键部分被提取到单独的函数中以供重用。 2.导入:将STL(或网格)导入MATLAB,并确保所需的函数,如DEM clusteredSphere(populateSpheres)和inpolyhedron,已添加到MATLAB路径中 3.生成多球体模型:使用DEM clusteredSphere方法从输入网格创建多球体模型 4.运行体积交点:计算多球体模型和参考几何体之间的基于体素的交点,并调整多球体模型以匹配目标体积 5.比较和可视化模型:比较多个多球体模型的体素频率,并计算多球体模型与原始表面模型之间的距离,以进行2D/3D可视化 使用案例: 骨科和生物力学体积建模 复杂结构的多球模型形状近似 基于体素拟合度量的模型选择 基于距离的患者特定几何形状和近似值分析 优点: 复杂几何的多球体模型 可扩展模型(基于体素)-自动调整到目标体积 可视化就绪输出(距离图)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值