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

时间:2015-11-19 20:38:10

标签: opengl glsl fragment-shader vertex-shader

我正在尝试从顶点着色器向我的片段着色器发送变量,但是当我在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;
  }
}

1 个答案:

答案 0 :(得分:2)

GL无法插入

int个变量。您必须使用flat限定符来声明输出和相应的输入。

根据您描述的行为,您似乎没有正确检查着色器/程序的编译和链接状态,并且似乎没有检索编译器/链接器信息日志。如果你这样做,你可能会得到一个有用的错误信息。