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 信息日志。如果这样做,您很可能会收到有用的错误消息。
我试图将一个变量从我的顶点着色器发送到我的片段着色器,但是当我在 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 信息日志。如果这样做,您很可能会收到有用的错误消息。