0

我想将值从顶点着色器传递到片段着色器。这是我现在要做的。

#version 150

in vec2 texcoord;
out vec2 f_texcoord;

void main()
{
    f_texcoord = texcoord;
}

如何在不定义两个变量名并最终摆脱该行的情况下达到相同texcoordf_texcoord行为f_texcoord = texcoord;

4

1 回答 1

2

在 GLSL 中,将属性从顶点着色器传递到片段着色器的唯一方法就是您现在正在做的事情 - 特别是纹理坐标,因为这些通常会更改每个顶点(在大多数情况下与位置或法线一起)。

对于其他属性,例如颜色或灯光位置,您可以声明“全局”变量,而不是通过添加uniforms两个着色器都可以使用的变量,而无需将它们作为输入输出对从顶点传递到片段。Uniforms 通常是在一批顶点上操作的常量,而不是改变每个顶点的值。

于 2013-01-04T10:39:41.707 回答