由于OpenGL可以执行内置的背面剔除,因此它必须计算顶点法线;可以访问这些而不是将其作为属性发送吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由于OpenGL可以执行内置的背面剔除,因此它必须计算顶点法线;可以访问这些而不是将其作为属性发送吗?相关的知识,希望对你有一定的参考价值。
想了解这一点;尚不清楚为什么您必须上传法线,但同时要遵循绕组顺序进行法线计算。
您在渲染命令中为OpenGL提供的所有顶点均按特定顺序排列。对于数组渲染,这意味着由绘图命令指定的数组中顶点的顺序。对于索引渲染,这是您要渲染的索引值范围内的索引顺序。实例渲染定义了每个实例的顶点都在前一个实例的顶点之后。依此类推。
primitive assembly system for a triangle采用此顶点序列并将其分解为三角形,具体取决于您渲染的图元类型。这意味着原始组装系统输出的每个顶点对于该三角形都有相对于其他顶点的顺序。一个顶点首先出现,然后是另一个顶点,然后是第三个顶点。
由于三角形仅具有3个顶点,所以光栅化器可以通过两种方式查看此顺序。如屏幕空间所示,顶点可以顺时针环绕三角形,也可以逆时针缠绕。这是三角形的winding order:从屏幕空间看,顶点的明显顺序。
这是缠绕顺序,用于确定脸部剔除的工作方式,不是法线。 GPU从不计算顶点法线。或任何形式的法线。
以上是关于由于OpenGL可以执行内置的背面剔除,因此它必须计算顶点法线;可以访问这些而不是将其作为属性发送吗?的主要内容,如果未能解决你的问题,请参考以下文章
我的渲染技术进阶之旅OpenGL ES 使用表面剔除和深度测试解决渲染3D模型的时候,出现背面黑点的问题
我的渲染技术进阶之旅OpenGL ES 使用表面剔除和深度测试解决渲染3D模型的时候,出现背面黑点的问题