2009-07-11 6 views
0

Shader können viele verschiedene einheitliche Namen + Attribute haben. Wie kann ich ein System erstellen, das im Allgemeinen funktioniert, damit ich den Namen der Shader-Uniform nicht im Voraus kennen muss und den Code für die Lokalisierung kodieren muss? Ich benutze OpenGL.Wie benutzt man Shader Uniformen im Allgemeinen?

Antwort

2

Leider müssen Sie irgendwann wissen, was die einheitlichen Namen im Shader sind und worauf sie sich beziehen ... es gibt einfach keinen Weg dazu.

Die meisten Grafik/Spiel-Engines funktionieren nach Konvention - bestimmte Uniformen werden von der Engine festgelegt, und Shader verwenden sie nach Bedarf. Einige fügen eine Konfiguration hinzu, so dass jeder Shader angeben kann, welche Uniformen erforderlich sind. In der Regel werden die Namen jedoch weiterhin konventionell vergeben.

1

Verwenden Sie eine Namenskonvention oder parsen Sie die Shader-Zeichenfolge selbst, um den Typ, das Symbol und den optionalen Speicherbezeichner zu erhalten. Die erstgenannte Option überträgt dem Shader-Programmierer eine Verantwortung, während die letztere Lösung den Anwendungsprogrammierer belastet. Solcher Code kann viel eleganter und effizienter gemacht werden, indem man die Erweiterung GL _ ARB _ uniform _ buffer _ object verwendet, die in OpenGL 3.1

zum Kern befördert wurde