9 votes

Existe-t-il un outil de vérification pour le langage d'ombrage OpenGL ?

J'ai commencé à travailler avec OpenGL et à écrire des shaders. Mon application vérifie les erreurs après le chargement et la compilation des programmes de shaders, et s'il y a un problème, elle imprime le journal d'information. C'est très bien pour détecter les erreurs (et je suis un débutant donc j'en fais beaucoup), mais ce que j'aimerais vraiment est d'attraper ces erreurs au moment de la construction.

Si j'avais un lint qui pourrait simplement vérifier les erreurs de syntaxe dans un vertex ou un fragment shader, je pourrais l'ajouter à mon processus de construction et faire en sorte qu'il arrête la construction.

Je n'ai pas réussi à trouver un tel outil. J'ai commencé à essayer d'en écrire un, mais je travaille sur OpenGL ES et j'avais difficulté à écrire un programme de bureau qui se lie aux bibliothèques ES. .

Peut-être que je l'ai manqué quelque part. Un tel outil existe-t-il ?

5voto

BЈовић Points 28674

Vous pouvez construire des shaders sur la ligne de commande, de la même manière que vous compilez votre programme c ou c++ ou tout autre programme que vous utilisez. Si vous utilisez Makefile, ajoutez simplement la compilation des shaders.

Vous pouvez utiliser le compilateur Cg pour compiler les shaders Cg et GLGL. Il devrait être disponible sur toutes les plateformes.

2voto

Marcus O Platts Points 407

Il y a aussi le compilateur GLSL de référence (qui gère OpenGL et OpenGL ES).

http://www.khronos.org/opengles/sdk/tools/Reference-Compiler/

1voto

LarsH Points 14726

Vous pourriez adapter le Shader Toy pour cet usage. Il compile le code du shader avec WebGL (qui est basé sur OpenGL ES) et signale les erreurs (et exécute également le shader pour que vous puissiez vérifier le résultat).

Vous auriez besoin d'un version préliminaire de Firefox (Minefield) ou de Chrome (Canary) pour le faire fonctionner.

Je ne sais pas comment exploiter le résultat de l'état de la compilation pour arrêter le processus de construction... Il y a Comment écrire les résultats dans un fichier local à partir de javascript ? mais ils sont un peu poilus...

Cependant, il peut toujours être une amélioration de votre processus de développement de tester vos changements de code de shader interactivement dans Shader Toy avant de compiler votre application de bureau. Puisque vous semblez développer sur un ordinateur de bureau pour des appareils mobiles (n'est-ce pas ?), ce serait une victoire.

D'un autre côté, si vous parveniez à faire fonctionner votre application de bureau qui se lie aux bibliothèques ES, cela semblerait être un outil dont beaucoup de développeurs pourraient bénéficier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X