在电脑图学中,顶点是储存一系列基本绘图所需属性的基本元素,例如二维或三维空间中的点、或曲面上的多个点。在著色器中,与顶点相连的元素称为图元,图元内部应上色的区域称为片段,顶点的集合称为顶点组或顶点阵列。[1]而在OpenGL中,顶点预设会包含位置、法向量、颜色、第二色彩、纹理座标等属性[2],而其可以透过著色器编程添加更多属性。
与几何学的关联
在电脑图学中,三维模型通常会表示为以三角形构成的多面体,其中,顶点所包含的资讯不像几何学中只含有座标资讯,而会额外地包含其渲染所需的资讯,如颜色、反射特性、纹理和表面法线等[3]。电脑图学中的顶点同样可以如同几何学构造与顶点相连的边,然而多边形并非由多个边组成的封闭结构,而是多个顶点依序围出的结构,并构成面,而以上组合在电脑图学中有一个专有名词,称为图元。
应用于三维模型
在电脑图学中,一般的三维模型通常可以通过曲面细分将非三角形曲面转换为三角形阵列。而三维模型通常是透过在图元上依据顶点性质内插出资料以渲染出最后的立体。[4]
顶点属性
在电脑图学中,三角形或多边形的顶点不仅与空间位置相关联,而且也需要提供正确渲染物件所需的其他值或关联资讯。这些资讯称为顶点属性(Vertex attributes)。顶点的大多数属性表示渲染所需的空间向量。这些向量通常可能是一维(x)、二维(x,y)或三维(x,y,z)的向量,并会包含一个齐次座标的维度(w)。这些值通常可以代表要绘制的物件之材质(material)的描述。这些数据通常会在顶点著色器或顶点处理流程中被使用。[4]
常见的顶点属性包括:
用途
顶点包含的资料通常是提供渲染物件所需。在早期版本的OpenGL中,顶点能包含的资料种类是固定的,并且要在起始函数的呼叫以及终止函数的呼叫之间依序传入每个顶点的资料,在OpenGL 1.0中起始函数为glBegin、终止函数为glEnd[12]。最初电脑图学中的顶点定义与几何学类似,只包含空间位置资讯,并且要透过glVertex传入资料[13]。颜色参数是额外的一个状态变数,指定一次后后续会沿用先前最后一次给定的颜色[14]。关于其他的顶点属性则是要在每个顶点定义glVertex之前给出[15]。而后来出现了著色器的概念[16],使得顶点定义能够直接被程式开发人员决定。顶点的各项属性被依序存入缓冲器中,并且输入到顶点著色器中,顶点著色器中定义的每一个被标记为attribute的变数都是一个顶点的属性,透过客制化这些属性可以让一些较复杂的演算法跟随渲染流程一同完成,例如等值立方搜寻演算法[17]。
参见
参考文献
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.