変更を試みる前に頂点を通過する単純なジオメトリシェーダーを作成しようとしています。
私の頂点シェーダーは
#version 150 core
in vec3 inPosition;
in vec4 inColor;
out vec4 vertexColor;
void main() {
vertexColor = inColor;
gl_Position = vec4(inPosition, 1.0);
}
私のジオメトリシェーダーは
#version 150 core
layout (triangles) in;
layout (triangle_strip, max_vertices=3) out;
void main() {
gl_Position = gl_in[0].gl_Position;
EmitVertex();
gl_Position = gl_in[1].gl_Position;
EmitVertex();
gl_Position = gl_in[2].gl_Position;
EmitVertex();
EndPrimitive();
}
そして私のフラグメントシェーダーは
#version 150 core
in vec4 vertexColor;
out vec4 fragColor;
void main() {
fragColor = vertexColor;
}
リンクされたジオメトリシェーダーがないと、すべてが正常に機能します。ただし、ジオメトリシェーダーでリンクすると、機能しなくなります。私が行方不明になっているのは何ですか?ジオメトリシェーダーにはvertexColor
頂点シェーダーからの入力が必要ですか?必要な場合、それはどのように行われますか?