J'écris un moteur de jeu et lorsque j'utilise une caméra en perspective, j'obtiens un écran noir. Je ne vais pas demander exactement pourquoi c'est parce qu'il y aurait beaucoup de code à partager et, franchement, je pense que c'est une question un peu mesquine même pour vous déranger tous.
Le problème est que je ne sais pas comment le déboguer. Tout ce qui change, c'est ma matrice de projection, et si ma matrice de projection semble bien, je ne sais pas pourquoi cela ne fonctionne pas. Idéalement, j'imprimerais les valeurs de diverses choses pendant que le shader effectuait ses calculs, mais GLSL n'a pas la fonction printf ().
Ma question est donc: comment déboguer mon problème? La seule chose à laquelle je peux penser est de vérifier autant de valeurs que possible côté client, puis de programmer par permutation, mais je l'ai fait et je suis arrivé nulle part. Existe-t-il un moyen de voir ce qui se passe sur la carte vidéo? Y a-t-il une technique complètement différente que je pourrais utiliser?
J'utilise la version 420 de GLSL (et les fonctionnalités spécifiques à cette version), donc je ne pense pas que glslDevil soit une option, étant donné qu'elle a été mise à jour pour la dernière fois en 2010.
ÉDITER
J'ai réussi à résoudre mon problème grâce à un débogage complètement indépendant.
Bien que je ne sois pas sûr, NVIDIA Nsight devrait être en mesure de déboguer les Shaders, au moins je pense qu'il supportait GLSL dans une version précédente (que vous devriez pouvoir trouver). Il s'intègre assez bien à Visual Studio, n'est pas facile mais a beaucoup de choses utiles, mais dans les anciennes versions, vous aviez besoin de 2 machines avec un GPU chacune pour déboguer les shaders via un réseau (tandis que la dernière version dit qu'elle permet le débogage "local") . Vérifiez également Shader Designer [2] qui semble être un IDE utile (mais sans débogage GLSL).
[1] http://developer.nvidia.com/content/nvidia-nsight-visual-studio-edition
[2] http://www.opengl.org/sdk/tools/ShaderDesigner/
la source
Malheureusement, le débogage d'Opengl n'est pas facile. Voici des choses que j'ai trouvées utiles:
la source
Personnellement, j'utilise toujours RenderMonkey. Cependant, il ne convient pas entièrement à cette question exacte car il ne s'agit que de la façade d'une véritable application et présente donc des limitations étranges. C'est bien hors du support mais je n'ai tout simplement rien trouvé de mieux pour déboguer GLSL.
la source