2

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

理想情况下,我想做尽可能少的工作,以某种方式将 (triangle,normal) 对转换为 (vertex,vertex_normal) 对,以便我可以粘贴到我的 VAO 中。OpenGL有没有办法直接处理面部法线?或者我是否必须跟踪给定顶点所涉及的每个面(在我计算索引缓冲区时或多或少已经发生),然后手动计算顶点的平均法线?

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

编辑:我使用的东西应该可以移植到 ES 设备上,所以固定功能的东西是不可用的

4

1 回答 1

3

我不一定会谈论最新的全脂 OpenGL 规范,但肯定在 ES 中你将不得不自己完成这项工作。

尽管法线在旧的固定管道下是模态的,就像其他所有东西一样,它附加到每个顶点。如果您选择平面着色模型,那么 GL 将使用面部第一个顶点处的颜色跨越整个事物,而不是对其进行插值。没有办法在 ES 下重新创建这种行为。

属性是每个顶点的,制服是 - 充其量 - 每批。在 ES 中,没有办法指定每个三角形的属性,并且没有渲染管道的阶段,您可以在其中对几何图形进行概述,您可以将它们单独分配到每个顶点。每个顶点单独处理,变化是插值,然后每个片段单独处理。

于 2013-08-28T23:41:35.377 回答