Pass-Through-Geometrie-Shader
-
21-12-2019 - |
Frage
Ich habe gerade mit OpenGL in Verbindung mit qt begonnen.Ich versuche, einen Geometrie-Shader zu verwenden, um die Linienbreite zu ändern, aber selbst ein einfacher Durchlaufgeometrie-Shader führt zu einem leeren Bildschirm.
Hier ist (ein Auszug von) mein Code:
generasacodicetagpre.vertex shader:
generasacodicetagpre.Geometrie Shader:
generasacodicetagpre.Fragment Shader:
generasacodicetagpre. Wenn ich line_shader.addShaderFromSourceFile(QGLShader::Geometry, ":/shaders/lines.g.glsl");
aus dem Code entferne, funktioniert alles wie erwartet.
Was mache ich hier falsch?
edit: Ich verwende OS X 10.9, Qt 5.2.1.
Lösung
Sind Geometrie-Shader, die von einer Erweiterung unterstützt werden, die nicht auf Ihrer Plattform geladen / aufgelöst wird?Ich glaube, dass sie optional sind, aber qt versucht sie zu laden ( source ).
Vielleicht haben sie in Ihrer Umsetzung etwas anderes benannt.Wenn Sie sie manuell auflösen müssen diesen KDAB-Artikel kann helfen.Es gibt den Kodex, um die Erweiterungen aufzulisten. Qt weiß:
generasacodicetagpre.Es könnte sein, dass die Erweiterung etwas anderes als das Qt bezeichnet wird.
auch offensichtlich, aber ich denke, Sie haben ein Shader-Tool auf Ihrer Plattform und konnten diesen Shader ausführen?Ich benutze MacOSX für die meiste Meinung von meiner Entwicklung und leider unterstützt das Tool "OpenGL Shader Builder" nur Fragment- und Vertex-Shader.Ich bin nicht sicher, welche Werkzeuge Geometrie-Shader unterstützen, aber ich denke, Sie sind an diesem Shader angekommen und haben es irgendwie überprüft.