Ich habe OpenGL (eigentlich OpenTK) für einen Monat oder so gelernt, und ich habe angefangen mit Geometrieshadern zu spielen. Ich habe ursprünglich einen viel komplizierteren Shader geschrieben, der nicht funktionierte, also habe ich alles aus einem einfachen Passthrough-Shader entfernt, was immer noch nicht funktioniert.GLSL Passthrough Geometrie Shader
Vertex Shader:
#version 420 core
layout (location = 0) in vec3 position;
uniform mat4 transform;
void main()
{
gl_Position = transform * vec4(position, 1);
}
Geometry Shader:
#version 420 core
layout (triangles) in;
layout (triangle_strip) out;
void main()
{
int i;
for(i = 0; i < gl_in.length(); i++)
{
gl_Position = gl_in[i].gl_Position;
EmitVertex();
}
EndPrimitive();
}
Fragment Shader:
#version 420 core
layout (binding = 0) uniform sampler2D diffuse;
layout(location = 0) out vec4 color;
void main()
{
color = vec4(1, 1, 1, 1);
}
Es sollte ein weißes Quadrat in der rechten unteren Ecke des Fensters ziehen und ohne der Geometrie Shader, tut es, was ich wo bin Ich erwarte es. Mit dem Geometry Shader wird nichts wiedergegeben. Info-Logs zeigen alles Kompilieren und Links gut.
Was fehlt mir?
kann keine offensichtlichen Fehler erkennen, aber haben Sie nach Kompilierungs- und Verbindungsfehlern für Shader gesucht? – Rabbid76
Ja, ich habe nach jeder Kompilation und nach der Verknüpfung überprüft; keine Fehler. –
Probieren Sie 'Layout (triangle_strip, max_vertices = 3) aus;' – Rabbid76