我正在尝试从顶点着色器向我的片段着色器发送变量,但是当我在if语句中包含特定的in
变量时,它不会显示任何内容。删除if语句会导致所有内容出现并正常工作。奇怪的是,如果语句实际上没有做任何事情,并且片段着色器没有生成错误。
我还有几个其他变量,我从顶点着色器发送到我的片段着色器,但这个变量是唯一导致问题的变量。我知道type
被设置正确,因为我正在使用它来处理正常工作的其他事情。
顶点着色器
#version 150
in float type;
out int roofBool;
void main(void)
{
textureXY = texcoords;
roofBool = 0;
if(type == 2){
roofBool = 1;
}
}
片段着色器
#version 150
in int roofBool;
// The output. Always a color
out vec4 fragColor;
void main()
{
int a = 0;
if(roofBool == 1){ //removing this causes everything to work
a = 2;
}
}
答案 0 :(得分:2)
int
个变量。您必须使用flat
限定符来声明输出和相应的输入。
根据您描述的行为,您似乎没有正确检查着色器/程序的编译和链接状态,并且似乎没有检索编译器/链接器信息日志。如果你这样做,你可能会得到一个有用的错误信息。