Piszę silnik gry, a kiedy używam kamery perspektywicznej, pojawia się czarny ekran. Nie zamierzam pytać dokładnie, dlaczego tak jest, ponieważ byłoby dużo kodu do dzielenia się i, szczerze mówiąc, myślę, że to trochę drobnostka, które może nawet niepokoić was wszystkich.
Problem polega na tym, że nie wiem, jak to debugować. Wszystkie te zmiany to moja matryca projekcyjna, a jeśli moja matryca projekcyjna wygląda dobrze, nie wiem, dlaczego to nie działa. Idealnie wydrukowałbym wartości różnych rzeczy, ponieważ moduł cieniujący wykonał swoje obliczenia, ale GLSL niedogodnie nie ma funkcji printf ().
Więc moje pytanie brzmi: jak mogę debugować mój problem? Jedyne, co mogę wymyślić, to sprawdzenie jak największej liczby wartości po stronie klienta, a następnie programowanie za pomocą permutacji, ale zrobiłem to i nic nie osiągnąłem. Czy mogę sprawdzić, co dzieje się na karcie graficznej? Czy mogę zastosować inną technikę?
Używam GLSL w wersji 420 (i funkcji specyficznych dla tej wersji), więc nie sądzę, że glslDevil jest opcją, biorąc pod uwagę, że została ostatnio zaktualizowana w 2010 roku.
EDYTOWAĆ
Udało mi się rozwiązać mój problem za pomocą całkowicie niepowiązanego debugowania.
Chociaż nie jestem pewien, NVIDIA Nsight powinien być w stanie debugować Shadery, przynajmniej myślę, że obsługiwał GLSL w niektórych poprzednich wersjach (które powinieneś być w stanie znaleźć). Całkiem dobrze integruje się z Visual Studio, nie jest łatwe, ale zawiera mnóstwo przydatnych rzeczy, ale w starszych wersjach potrzebowałeś 2 komputerów z GPU, aby debugować shadery przez sieć (podczas gdy najnowsza wersja mówi, że pozwala na "lokalne" debugowanie) . Sprawdź także Shader Designer [2], który wydaje się być użytecznym IDE (ale bez debugowania GLSL).
[1] http://developer.nvidia.com/content/nvidia-nsight-visual-studio-edition
[2] http://www.opengl.org/sdk/tools/ShaderDesigner/
źródło
Niestety debugowanie OpenGL nie jest łatwe. Oto rzeczy, które uznałem za przydatne:
źródło
Osobiście nadal używam RenderMonkey. Jednak nie jest to w pełni odpowiednie do tego dokładnego pytania, ponieważ jest to tylko fasada prawdziwej aplikacji, a zatem ma pewne dziwne ograniczenia. Nie ma wsparcia, ale po prostu nie znalazłem nic lepszego do debugowania GLSL.
źródło