6

是否可以将自定义属性传递给片段着色器,我知道我可以将属性传递GLES20.glVertexAttribPointer给顶点着色器,但是我如何将浮点 [] 传递给片段着色器?

4

2 回答 2

15

不。

如果您想将制服传递给片段着色器,您可以轻松地做到这一点(参见任何教程)。但是,如果您想要类似于 per-vertex 属性的东西,那么这样做是没有意义的。您还可以做的是将属性传递给顶点着色器,然后在顶点着色器中将它们作为变量传递给片段着色器。它们将在图元中进行插值,并作为片段着色器的输入提供。

于 2012-07-19T19:44:36.603 回答
1

蒂姆的回答当然是正确的。

一种可能的解决方法是将您的float值存储在 2D 纹理中并将纹理坐标(和值的数量)传递给着色器。但是,如果每个顶点有大量浮点值(因为每个片段的所有纹理查找),这可能会变得非常慢。另一个问题是,如果您有很多顶点,这会导致纹理非常大。无论如何,在某些情况下,这种方法可能很有用。

于 2012-07-20T08:29:21.593 回答