Fragment Shader IN 变量不显示任何内容

Fragment Shader IN variable causes nothing to appear

我试图将一个变量从我的顶点着色器发送到我的片段着色器,但是当我在 if 语句中包含一个特定的 in 变量时,它没有显示任何内容。删除 if 语句会导致一切正常显示和工作。奇怪的是 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;
  }
}

int GL 无法插入变量。您 必须 使用 flat 限定符声明输出和相应的输入。

从您描述的行为来看,您似乎没有正确检查 shaders/programs 的编译和 link 状态,并且似乎没有检索 compiler/linker 信息日志。如果这样做,您很可能会收到有用的错误消息。