一些常用词汇解释(持续更新)

Draw Call: 本身的意义很简单,就是CPU调用图像编程接口。

       一个常见的误区是,Draw Call早上性能问题的元凶GPU,认为GPU上的状态切换是耗时的,但其实真正耗时的是CPU。GPU渲染能力是很强的,渲染200个或者2000个都没什么区别,因此渲染速度往往快于CPU提交命令到命令缓冲区的速度,如果Draw Call的数量太多,CPU就会把大量时间花费在提交Draw Call身上,造成CPU的过载。(尤其体现在提交大量很小的Draw Call上的情况)

 

固定函数的流水线(Fixed-Function Pipleline),也成为固定管线,通常是指在较旧的GPU上实现的渲染流水线。这种流水线只会给开发者提供一些配置操作,但开发者没有对流水线阶段的完全控制权。这货基本上已经被淘汰了。

 

图元(primitive):图元就是组成图像的基本单元,比如三维模型中的点、线、面等等,注意图元(entity)与片元(primitive)的区别,片元就是以后的像素点,它比像素多一些位置、法向量等属性。

 

网格(Mesh):一般来说,3D世界里的面都是由网格(三角网格)组成的。模型上的小网格就是一个Mesh,这些网格各自由不同的三维顶点(Vector3),共同组成了一个3D模型。

 

片元(fragment):片元是光栅化阶段的三角形遍历后产生的,被三角网格覆盖的每个像素点都会产生片元,片元是一个状态的集合,用于计算每个像素的最终颜色,这些状态包括但不限于这个点的屏幕坐标,深度信息,以及其他从几何阶段输出的顶点信息,例如法线,纹理坐标等。  

 

Shader:Shader所在的阶段是渲染流水线的一部分,更具体的说,shader就是:

  * GPU流水线上一些可高度编程的阶段,而由着色器编译出来的最终代码是会在GPU上运行的(对于固定管线的渲染来说,着色器有时等同于一些特定的渲染设置);

  * 有一些特定类型的着色器,如顶点着色器、片元着色器等;

  * 依靠着色器我们可以控制流水线的渲染细节,例如用顶点着色器来进行顶点变换以及传递数据,用片元着色器来进行逐像素的渲染。

 

HLSL(High Level Shading Language):DirectX的着色语言。主要在微软自身的产品。

GLSL(OpenGL Shading Language):OpenGL的着色语言,有优点在于跨平台性,编译结果取决于硬件供应商。

CG(C for Graphic):真正意义上的跨平台。根据平台的不同,编译成相应的中间语言。语法和HLSL比较像。缺点是可能无法完全发挥出OpenGL的新特性。

 

posted on 2019-07-05 12:02  optexpr  阅读(144)  评论(0)    收藏  举报

导航