Das Problem sind die Begriffe, die Sie verwenden.
Lassen Sie mich ein Gleichnis anführen:
- Eine ausführbar besteht aus verknüpften Objekte , Objekte werden aus dem Quellcode kompiliert.
- A Shader-Programm besteht aus verknüpften Shader-Objekte Shader-Objekte werden aus dem Quellcode kompiliert.
Wie Sie sehen können, ist ein Shader-Programm die ausführbare Datei. Es verknüpft mehrere Shader-Objekte. Jedes Shader-Objekt wird aus einer Quelle kompiliert. Wie bei gewöhnlichen ausführbaren Programmen gibt es nur einen Haupteinstiegspunkt, der durch ein einziges Shader-Objekt definiert ist. Genau wie beim Kompilieren mit einer beliebigen Kompilier-Toolkette.
Die Lösung liegt in einem ausgewogenen Verhältnis zwischen der Kombination von Shader-Objekten und der Anzahl der Shader-Programme. Natürlich wäre es schön, nur ein Shader-Programm für das Rendering zu haben, aber das ist zu viel verlangt: Versuchen Sie, die Shader-Funktionen zu faktorisieren, dann kompilieren Sie diese Funktionen separat und verknüpfen Sie sie nach Bedarf.
Und Sie müssen einen Blick werfen auf OpenGL-Registrierung Ich denke, Sie werden in der Liste der Erweiterungen etwas Interessantes finden.