顶点 (电脑图形学)
在电脑图形学中,顶点是存储一系列基本绘图所需属性的基本元素,例如二维或三维空间中的点、或曲面上的多个点。在着色器中,与顶点相连的元素称为图元,图元内部应上色的区域称为片段,顶点的集合称为顶点组或顶点数组。[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]。
参见
[编辑]参考文献
[编辑]- ^ Tomas Akenine-Möller, Eric Haines, Naty Hoffman. Real-Time Rendering. CRC Press. 2016. ISBN 9781498785631. LCCN 2008011580.
- ^ 2.0 2.1 2.2 2.3 2.4 Andrew Garrard. Khronos Data Format Specification (PDF). Khronos Group. 2019-03-31 [2019-09-16]. (原始内容存档 (PDF)于2022-04-19).
- ^ Christen, Martin. Clockworkcoders Tutorials: Vertex Attributes. Khronos Group. [26 January 2009]. (原始内容存档于2019-04-12).
- ^ 4.0 4.1 Vertex Shader Introduction (PDF). nvidia. [2019-09-16]. (原始内容存档 (PDF)于2021-07-28).
- ^ Tan, Ping and Lin, Stephen and Quan, Long and Guo, Baining and Shum, Heung-Yeung, Multiresolution Reflectance Filtering., Rendering Techniques, 2005: 111––116
- ^ RCA Corporation. RCA Electro-optics Handbook. RCA solid State. RCA/Commercial Engineering. 1974: p.18 ff [2021-07-16]. LCCN 75318901. (原始内容存档于2022-05-31).
- ^ Warren J. Smith. Modern optical engineering. McGraw-Hill. 1966: p.228, 256.
- ^ Watt, Alan H.; Watt, Mark. Advanced Animation and Rendering Techniques: Theory and Practice. Addison-Wesley Professional. 1992: 21–26. ISBN 978-0-201-54412-1.
- ^ Foley, James D.; van Dam, Andries; Feiner, Steven K.; Hughes, John F. Computer Graphics: Principles and Practice. (2nd ed. in C). Addison-Wesley Publishing Company. 1996: 738–739. ISBN 0-201-84840-6.
- ^ Habel, Ralf and Wimmer, Michael, Efficient irradiance normal mapping, Proceedings of the 2010 ACM SIGGRAPH symposium on Interactive 三维 Graphics and Games (ACM), 2010: 189––195
- ^ Jacobson, Alec and Sorkine, Olga, Stretchable and twistable bones for skeletal shape deformation, ACM Transactions on Graphics (TOG) 30 (6) (ACM), 2011, 30 (6): 165
- ^ Martz, P. OpenGL Distilled. OpenGL. Pearson Education. 2006: 38. ISBN 9780132701785.
- ^ Bailey, M. and Cunningham, S. Graphics Shaders: Theory and Practice, Second Edition. CRC Press. 2016. ISBN 9781439867754. LCCN 2011031720.
- ^ Guha, S. Computer Graphics Through OpenGL: From Theory to Experiments. CRC Press. 2014. ISBN 9781482258400.
- ^ Shreiner, D. and Group, B.T.K.O.G.L.A.R.B.W. OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1. Pearson Education. 2009. ISBN 9780321669278.
- ^ The RenderMan Interface Specification. (原始内容存档于2019-06-16).
- ^ Goetz, Frank and Junklewitz, Theodor and Domik, Gitta, Real-Time Marching Cubes on the Vertex Shader., Eurographics (Short Presentations), 2005: 5––8