L'extérieur de Définir des Macros du Préprocesseur en GLSL
GLSL a plein de style C le préprocesseur. La seule chose qui ne fonctionne pas est de #include. Une des grandes caractéristiques est que vous pouvez utiliser #ifdef pour commenter les fonctions, et donc de créer un shader qui peuvent être diminués si certaines fonctions ne sont pas utilisés.
Ma Question est:
Est-il un moyen de définir une macro à partir d'un code C?
Il n'y a aucun moyen de le faire avec l'interface de openGL. La rapide hack est d'ajouter quelques lignes avec #define FOO avant que le code chargé forme de fichier. Mais il semble sorte de l'arrière.
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas vraiment besoin de le préfixer le code que vous avez chargé. C'est pourquoi il existe plusieurs chaînes de caractères dans le glShaderSourceARB API.
Quelque chose comme ce qui suit ne ce que vous cherchez:
glDefine("Moo", "Foo")
... mais il semble que j'ai étudié les spécifications correctement...#version
déclaration. En ajoutant des trucs arbitrairement comme ceci, de faire cela impossible. De sorte que vous sera, par défaut, GLSL, version 1.10, ce qui est assez ancienne.sources[3]== {"#version 330 core\n", "#define FOO\n, ..."
pour en faire un une bonne idée.#define
s est de sorte que vous pouvez construire plusieurs programmes différents à partir du même code source. Ubershaders sont tous sur l'utilisation des uniformes de commutateur de fonctions sur et en dehors, de sorte que vous n'rarement modifier le programme.Voici ce que j'utilise pour éviter
#version
problèmes. Il est de Java, et pas optimisé pour la perfo, mais il fonctionne parfaitement: