我想将值从顶点着色器传递到片段着色器。这就是我现在所做的。
#version 150
in vec2 texcoord;
out vec2 f_texcoord;
void main()
{
f_texcoord = texcoord;
}
如何在不定义两个变量名texcoord
和f_texcoord
的情况下达到相同的行为,最终甚至摆脱行f_texcoord = texcoord;
?
答案 0 :(得分:2)
在GLSL中,将属性从顶点着色器传递到片段着色器的唯一方法就是你现在正在做的 - 特别是纹理坐标,因为它们通常会改变每个顶点(在大多数情况下也会有位置或法线) )。
对于其他属性,例如颜色或灯光位置,您可以通过添加uniforms
来声明“全局”变量,两个着色器都可以使用它们,而不会将它们作为从顶点到片段的输入输出对传递。制服通常是对一批顶点进行操作的常量,而不是改变每顶点的值。