GLSL:顶点着色器到片段着色器,无变化

GLSL:顶点着色器到片段着色器,无变化,glsl,fragment-shader,vertex-shader,Glsl,Fragment Shader,Vertex Shader,如何在不进行更改的情况下将数据从顶点着色器传输到片段着色器? 我需要对顶点像素说,它们有这种颜色。这种颜色我只能在顶点着色器中获得。这里有一个关于GLSL的好教程: 如果要在顶点着色器和片段着色器之间共享数据,请使用其中一种内置类型,例如gl\u Color 如果要通过顶点着色器计算的颜色来通过片段着色器,可以使用以下行创建片段着色器:gl\u FragColor=gl\u color gl_Color将根据顶点着色器写入的颜色自动设置。通过设置一个内置变量(如gl_FrontColor)或它的

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

这里有一个关于GLSL的好教程:

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

如果要通过顶点着色器计算的颜色来通过片段着色器,可以使用以下行创建片段着色器:
gl\u FragColor=gl\u color


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

这里有一个关于GLSL的好教程:

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

如果要通过顶点着色器计算的颜色来通过片段着色器,可以使用以下行创建片段着色器:
gl\u FragColor=gl\u color


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

必须使用一个变量,因为每个片段都受多个顶点的“影响”(除非渲染
gl_点
),因此,您必须跨直线/多边形对其进行插值。GLSL的最新版本允许指定平面着色插值,它不会在整个基本体中插值值,而忽略其他顶点的值


我怀疑你想做的是只渲染对应于不同颜色顶点的像素,对吗?在这种情况下就不那么容易了,您可能需要先渲染填充的多边形,然后重新渲染为
GL\u点
。在这一点上,由于每个片段受一个顶点的影响,因此不会对变化变量进行插值。

您必须使用变化变量,因为每个片段受多个顶点的“影响”(除非您渲染
GL_点
),因此必须跨直线/多边形对其进行插值。GLSL的最新版本允许指定平面着色插值,它不会在整个基本体中插值值,而忽略其他顶点的值


我怀疑你想做的是只渲染对应于不同颜色顶点的像素,对吗?在这种情况下就不那么容易了,您可能需要先渲染填充的多边形,然后重新渲染为
GL\u点
。在这一点上,由于每个片段都受单个顶点的影响,因此不会插值不同的变量。

您所说的“此颜色我只能在顶点着色器中获得颜色”是什么意思?“通常,您可以在片段着色器中使用由顶点着色器创建的颜色值。所以,我不知道你在问什么。对不起,这是一个打印错误。)@DasBoot“通常你可以在由顶点着色器创建的片段着色器中使用颜色值。”-如何做到这一点?我指的是如何传输它。你所说的“此颜色我只能在顶点着色器中获得颜色”是什么意思?“通常,你可以在由顶点着色器创建的片段着色器中使用颜色值。所以,我不知道你在问什么。对不起,这是一个打印错误。)@DasBoot“通常你可以在由顶点着色器创建的片段着色器中使用颜色值。”-如何做到这一点?我的意思是如何传输它。我认为它不起作用,我看不到结果,顶点着色器返回:警告C7564:分配给属性gl_ColorRight。应该提到您应该在顶点着色器中设置gl_FrontColor(或它的一个对等项,如gl_BackColor)。gl_颜色将自动为您设置。我认为它不起作用,我看不到结果,顶点着色器返回:警告C7564:指定给属性gl_ColorRight。应该提到您应该在顶点着色器中设置gl_FrontColor(或它的一个对等项,如gl_BackColor)。gl_颜色将自动为您设置。