从0开始的视觉学习

1.专业名词汇总

2020-07-02  本文已影响0人  NealDN

跳去目录


着色器的渲染流程    (先过一遍流程,有个概念)

顶点数据 -> 顶点着色器 -> 细分着色器 -> 集合着色器 -> 图元设置(装配)-> 根据投影剪切 -> 光栅化 -> 片元着色器 -> 效果


上下文 【Context】

        context从本质上来讲是一个巨大的状态机,它记录了关于图形的各种状态,类比PS的话,状态机记录了画笔的颜色,画笔的像素点大小,画笔的种类,当点击画笔的时候,画笔的属性会自动被设置成状态机所记录下的属性,从狭义上来说,状态机就是记录着很多工具的各种属性。而OpenGL则有非常多的状态,保存这些状态的状态机就是context

        OpenGL的函数类似于C语言,都是面向过程的函数,对OpenGL对操作实际上是对OpenGL对某个状态或某个工具进行的操作,在后续开发中,可以基于一定的环境,对OpenGL指令集进行封装,便可以转花纹面对对象对操作,但OpenGL本身仍是面向过程的


渲染

        将一张图片或者控件或视频显示到屏幕上的过程,这个过程被称为‘渲染’


顶点数组

        在OpenGL中,所有图形都是由若干个三角形组成,每个三角形会有三个顶点,每个顶点会有(x,y,z)3个坐标

        OpenGL坐标系中,每个轴最大值为1,最小值为-1,分别对应屏幕的一端到另一端,屏幕正中心的坐标为(0,0)

        顶点数组是存储于内存中的


顶点缓冲区

        为了使GPU更高效的工作,会将即将使用的顶点数组复制到GPU显存中,以便于GPU快速处理数据,而存放这些顶点数据的区域则称之为‘顶点缓冲区’


位图

        内存并不能直接处理图片(png\jepg)本身,而是通过将图片的每一个像素点的RGBA值进行储存,以这种形式进行储存的图片数据称之为‘位图’

        位图本身过于庞大,例如一张100*100像素位图,会占用10000个像素点,每个像素点会占用R,G,B,A也就是4*8bit=4B(FF -> 1111 1111),10000个像素点会占用40000B(40KB)的内存,一张100*100的png一般在1kb~15kb(我把一张4k图片暴力压缩到100*100,最后是14kb,png图片会比jpg图片更大一点)之间,可见,位图不适合用于储存,因此,则需要压缩后再进行储存,而再编程中若要使用图片,则需要先解码,再渲染。

        一般所说的png或jpg是通过压缩而来的。


映射

        例如:由png转换为位图的过程中,会将图片上的一个像素点转换为屏幕上的像素点,这个过程称之为 ‘映射’ (实际上,是顶点坐标与纹理坐标的映射)


管线

        无论是png转换为位图后渲染,或是位图转换为png进行储存,都有一条固定的流程,这个过程是线性切不可逆的,那些特定的流程称之为 ‘管线’


固定管线

        在管线中,会有很多特定的流程,有些流程是可以进行干预甚至修改内部操作的(定制),有些是不可以进行操作的,这些不可以操作(只能传入符合条件的值,并得到特定的值,是不可修改的库)的流程称之为 ‘固定管线’,又称之为 ‘固定着色器’


 可编程管线

          相对于固定管线,那些可以进行操作(编程、定制)的管线称为 ‘固定管线’


着色器  【Shader】

        在编程中,一般我们所写的 函数/方法 是CPU来进行调用的,还有一些代码是专门用于GPU来调用的,这些代码称之为 ‘着色器’,见百度词条<着色器>


固定着色器

        OpenGL所提供的不可编程的着色器


自定义着色器

        程序员基于GLSL语法来进行开发(定制)的着色器

        顶点着色器:用来处理顶点相关的着色器 1.确定位置,2.缩放/平移/旋转,3.3D图形转换为2D图形投影换算

        片元着色器(像素着色器):片元(其实是像素点),用来处理片元相关的着色器,在CPU中是串行渲染片元,GPU中并行渲染像素点 (图片的饱和度、明度之类的效果变化是通过修改片元着色器来实现的)


GLSL (OpenGL Shading Language)

        GPU仅能识别由符合OpenGl标准的语言,这种语言称之为GLSL        

        Metal并非基于OpenGL,GLSL并不通用于Metal


光栅化

        顶点着色器完成映射后,片元着色器开始工作(两个顶点汇成线,三个顶点汇成三角形,这个过程称为 ‘图元装配’ ),而OpenGL仅支持点、线、三角形的映射,映射完成后,可以确定线或者三角形区域中的像素点,这个过程称之为光栅化,之后由片元着色器对每个像素的颜色进行计算,再通过光栅化将颜色附着上去

光栅化手绘

    因此,光栅化有两个目的,1.确定片元像素点的位置,2.附着颜色

    光栅化是不可以进行编程的        


 纹理

        大多数情况下,纹理为位图,其格式为.tga纹理文件

        在OpenGL ES中,图片会直接转换为位图,而不是纹理


混合

        在图片进行叠加时,对叠加区域会有一个显示的计算,这个计算行为称之为 ‘混合’,这个计算是由OpenGL完成的


变换矩阵

        在图形进行旋转、缩放、平移时,主要是顶点数据的变化,而顶点数据的变化是根据线性代数来进行的,基本公式为 点 * 矩阵 ,这里的矩阵称之为 ‘变换矩阵’

        变换矩阵主要针对顶点数组的变化


投影矩阵

         在3D图形显示在2D屏幕上时,需要将3D坐标转换为2D坐标,这个变换也是根据线性代数来进行的,基本公式为 点*矩阵 , 这里的矩阵称之为 ‘投影矩阵’

        投影矩阵会涉及到3D效果转2D时所有的像素点


坐标系

        2D笛卡尔坐标系 x-y 坐标系 百度百科<笛卡尔坐标系>

        3D笛卡尔坐标系 x-y-z 坐标系 百度百科<笛卡尔坐标系>


视口

        坐标系对应屏幕区域的范围 百度百科<视口>

        对于macos而言,视口为分辨率,分辨率越小,显示的内容越少,内容越大


投影方式

        1.正投影

            标准正投影为 1.正视图,2.侧视图, 3.俯视图

            具体效果为:远近一样大

            一般用来显示2D效果的

        2.透视投影

            具体效果为:远小近大

            一般用来显示3D效果的


其他坐标系

        观察者坐标系 将人眼作为Camera,人眼机位观察者坐标系的原点

        物体坐标系 物体本身具有各种属性,用来表达这些属性的汇总即为物体坐标系

        世界坐标系 将地球比做世界,经纬度即地底深度及海拔即为世界坐标系


着色器的渲染流程 (最后温习一下)

        顶点数据 -> 顶点着色器 -> 细分着色器 -> 集合着色器 -> 图元设置(装配)-> 根据投影剪切 -> 光栅化 -> 片元着色器 -> 效果

(还不完善,后续涉及到相关专业名词时进行调整及补充...)


跳去目录

上一篇下一篇

猜你喜欢

热点阅读