2011-05-05 230 views
0

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

+0

你是什么意思“这种颜色我只能在顶点着色器中获得颜色?”通常,您可以使用由顶点着色器创建的片段着色器中的颜色值。所以,我不确定你在问什么。 – 2011-05-05 02:10:18

+0

对不起,这是一个错字。)@DasBoot“通常,您可以使用由顶点着色器创建的片段着色器中的颜色值。” - 这个怎么做?我的意思是如何转移它。 – itun 2011-05-05 02:19:02

+0

使用变化。 – 2011-05-05 02:33:13

回答

2

这里有GLSL一个很好的教程:NeHe GLSL tutorial

如果你想分享的顶点和片段着色器之间的数据使用一个内置的类型,例如gl_Color

如果你想通过颜色由顶点着色器通过片段着色器计算出来,您将创建一个片段着色器,其中包含以下行:gl_FragColor = gl_Color

gl_Color将从顶点着色器写入的颜色自动设置。您可以通过设置其中一个内置变量(如gl_FrontColor或其中一个同位体:gl_BackColor等)来从顶点着色器中写入颜色。

+0

我认为它不起作用,我看不到结果并且顶点着色器返回:警告C7564:赋值给属性gl_Color – itun 2011-05-05 03:00:16

+0

对。应该提到您应该在顶点着色器中设置gl_FrontColor(或其中一个像gl_BackColor的对象)。 gl_Color将自动为您设置。 – 2011-05-05 03:08:05

3

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

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