0
所以我在我的程序中有三個着色器。我是否需要通過幾何着色器將顏色傳遞給片段着色器?
頂點:
#version 330 core
in vec2 Inpoint;
in vec2 texCoords;
out vec2 TexCoords;
uniform mat4 model;
uniform mat4 projection;
void main()
{
TexCoords = texCoords;
gl_Position = projection * model * vec4(Inpoint, 0.0, 1.0);
}
幾何:
#version 330 core
layout(triangles) in;
layout(triangle_strip, max_vertices = 4) out;
void main()
{
int i;
for (i = 0; i < gl_in.length(); i++)
{
gl_Position = gl_in[i].gl_Position;
EmitVertex();
}
EndPrimitive();
}
最後片段着色器:
#version 330 core
in vec2 TexCoords;
out vec4 color;
uniform sampler2D image;
uniform vec3 spriteColor;
void main()
{
color = vec4(spriteColor, 1.0) * texture(image, TexCoords);
}
現在沒有幾何着色器,一切都顯示就好了。但是,只要我包含幾何着色器,一切都會變壞...。
它表現得像它沒有得到紋理的和絃。
所以,問題是,幾何着色器是否需要將數據通過自身傳遞給片段着色器?我的意思是幾何着色器基本上什麼都不做,所以它不應該。除非我錯過了一些巨大的錯誤。
我試圖添加一個傳遞,但它抱怨說,一切都需要是一個數組,並且即使當我把它做成一個數組時,它也不是很正常。