0

如何在不更改的情况下将数据从顶点着色器传输到片段着色器?我需要告诉顶点像素他们有这种颜色。这种颜色我只能在顶点着色器中获得。

4

2 回答 2

3

您必须使用变化,因为每个片段都受到多个顶点的“影响”(除非您正在渲染GL_POINTS),因此您必须将它们插入线/多边形。最新版本的 GLSL 允许指定平面着色插值,它不会在整个图元中插入值,而忽略来自其他顶点的值。

我怀疑你想要做的是只渲染与不同颜色的顶点对应的像素,对吗?在这种情况下,这并不容易,您可能希望先渲染填充的多边形,然后重新渲染为GL_POINTS. 此时,不会插入变化的变量,因为每个片段都受单个顶点的影响。

于 2011-05-11T17:27:05.127 回答
2

这是一个很好的 GLSL 教程:NeHe GLSL 教程

如果要在顶点着色器和片段着色器之间共享数据,请使用其中一种内置类型,例如gl_Color

如果您想通过顶点着色器计算的颜色通过片段着色器,您将使用以下行创建片段着色器:gl_FragColor = gl_Color

gl_Color将根据顶点着色器编写的颜色自动为您设置。您可以通过设置一个内置变量(如gl_FrontColor)或它的对等变量之一来从顶点着色器编写颜色:gl_BackColor等。

于 2011-05-05T02:24:46.807 回答