Ich versuche, meinen Kopf um die folgenden zu erhalten:OpenGL - Schalter Shadern
Ich habe ein Objekt, das ich mit zwei verschiedenen Sätzen von Vertex/Fragment-Shader in der Lage sein will, zu machen, dass jeder hat ihre Uniformen und Texturen, und gehen Sie zwischen diesen beiden Einstellungen hin und her. (Ich weiß, ich in diesem Fall mit einem einheitlichen Diktieren nur einen Shader haben könnte, die Logik zu laufen, aber das ist Teil eines größeren Dings, wo ich kann das nicht)
- Soll ich einen oder zwei gl Programme (erstellt von
glCreateProgram()
)? - Wenn ich zwei Programme verwende, ist es in Ordnung, die nicht verwendete Datei zu verwerfen und sie später neu zu erstellen? Oder ist es zu langsam?
- Wenn ich nur ein Programm verwenden:
- kann ich Shadern nur einmal am Anfang kompilieren?
- sollte ich beim Wechsel alte Shader abtrennen, neue anhängen und das Programm erneut verlinken?
- sollte ich alle Uniformen nach der Verknüpfung neu berechnen?
- sollte ich Array-Puffer nach der Verknüpfung erneut binden?
- sollte ich etwas tun, um zuvor angefügte Texturen zu entfernen?
Erstellen und Shadern Verknüpfung ist usally ein sehr langsamer Vorgang. Ich würde empfehlen, am Anfang einfach zwei Programme zu erstellen und diese bei Bedarf zu verwenden. Für weitere Informationen müssten Sie weitere Details zu Ihrem Nutzungsszenario angeben. Zum Beispiel, wie oft der Shader geändert werden muss. – BDL