0
私は私のプログラムに3つのシェーダを持っています。ジオメトリシェーダをフラグメントシェーダに渡して色を渡す必要がありますか?
頂点:
#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);
}
、すべてがうまく表示されます。しかし、ジオメトリシェーダーを追加するとすぐに、すべてが悪くなります。
テクスチャのコードが得られないように動作します。
ジオメトリシェーダは、データをフラグメントシェーダに渡す必要がありますか?私はジオメトリシェーダが基本的に何もしていないので、そうしてはならないことを意味します。巨大な間違いがない限り、私は行方不明です。
私はパスを追加しようとしましたが、すべてが配列でなければならないと訴えています。配列しても正しく動作しませんでした。