我正在使用OpenGL,并不满意标准方法传递每个三角形(或在我的情况下,四边形)的值,这些值需要在片段着色器中使用,即将它们分配给每个原始图元的顶点,并通过顶点着色器传递它们以被不必要地插值(除非使用“flat”指令)在片段着色器中(因此换句话说,每个片段非变化的)。
有没有一种方式可以存储每个三角形(或四边形)的值,以便在片段着色器中访问,而不需要每个顶点都有冗余副本?如果是这样,那么这种方式是否比CPU端的3x(或4x)数据移动代码的开销更好?
我知道使用几何着色器可以将这些值扩展到新顶点,但我听说几何着色器在不更新硬件上非常慢。这是真的吗?
有没有一种方式可以存储每个三角形(或四边形)的值,以便在片段着色器中访问,而不需要每个顶点都有冗余副本?如果是这样,那么这种方式是否比CPU端的3x(或4x)数据移动代码的开销更好?
我知道使用几何着色器可以将这些值扩展到新顶点,但我听说几何着色器在不更新硬件上非常慢。这是真的吗?
gl_PrimitiveID
作为纹理坐标。 - derhass