GLSL:顶点着色器到片段着色器而没有变化

时间:2011-05-05 02:05:50

标签: glsl fragment-shader vertex-shader

如何将数据从顶点着色器传输到片段着色器而不进行更改? 我需要对顶点像素说他们有这种颜色。这种颜色我只能在顶点着色器中获得。

2 个答案:

答案 0 :(得分:3)

你必须使用变量,因为每个片段都被多个顶点“影响”(除非你渲染GL_POINTS),所以你必须在线/多边形上插入它们。最新版本的GLSL允许指定平面着色插值,它不会在整个图元中插值,忽略其他顶点的值。

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

答案 1 :(得分:2)

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

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

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

将根据顶点着色器写入的颜色自动为您设置

gl_Color。您可以通过设置其中一个内置变量(如gl_FrontColor或其中一个对等项)来从顶点着色器中编写颜色:gl_BackColor等。