如何将数据从顶点着色器传输到片段着色器而不进行更改? 我需要对顶点像素说他们有这种颜色。这种颜色我只能在顶点着色器中获得。
答案 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
等。