在OpenGL中使用三角形法线来获取顶点法线

时间:2013-08-28 21:03:35

标签: opengl opengl-es

我有一个顶点列表及其排列成三角形以及每三角标准化法向量。

理想情况下,我想以某种方式尽可能少地将(三角形,正常)对转换为(顶点,顶点 - 正常)对,我可以将其粘贴到我的VAO中。有没有办法让OpenGL直接处理面部法线?或者我是否必须跟踪给定顶点所涉及的每个面(当我计算索引缓冲区时已经或多或少地发生了这种情况)然后手动计算顶点的平均法线?

另外,有没有办法完全跳过每顶点法线计算,只是找到一种直接通知片段着色器面部法线的方法?

编辑:我正在使用可以移植到ES设备的东西,所以固定功能的东西是无法使用的

1 个答案:

答案 0 :(得分:3)

我不一定会谈到最新的全脂OpenGL规范,但在ES中你肯定要自己做这项工作。

虽然法线在旧的固定管道下是模态的,就像其他任何东西一样,但它附着在每个顶点上。如果你选择了平面着色模型,那么GL会在整个面上使用面上第一个顶点的颜色而不是插值。没有办法在ES下重新创建这种行为。

属性是每个顶点,制服最多 - 每批次。在ES中,没有办法指定每个三角形属性,并且没有渲染管道的阶段,当您可以将它们分别分配到每个顶点时,您可以在其中概览几何体。每个顶点都是单独处理的,变换是插值的,然后每个片段都是单独处理的。