Я пишу игровой движок, и когда я использую перспективную камеру, я получаю черный экран. Я не собираюсь спрашивать, почему это так, потому что было бы много кода, которым можно поделиться, и, честно говоря, я думаю, что это немного мелкий вопрос, даже если вас всех это беспокоит.
Беда в том, что я не знаю, как его отладить. Все, что меняется, это моя матрица проекций, и если моя матрица проекций выглядит нормально, я не знаю, почему она не работает. В идеале я бы распечатывал значения различных вещей, так как шейдер делал свои вычисления, но GLSL неудобно не имеет функции printf ().
Итак, мой вопрос: как мне отладить мою проблему? Единственное, о чем я могу думать, это проверить столько значений, сколько я могу на стороне клиента, а затем программировать с помощью перестановки, но я сделал это и ничего не получил. Есть ли способ узнать, что происходит на видеокарте? Могу ли я использовать совершенно другую технику?
Я использую GLSL версию 420 (и функции, специфичные для этой версии), поэтому я не думаю, что glslDevil - это вариант, учитывая, что он последний раз обновлялся в 2010 году.
РЕДАКТИРОВАТЬ
Мне удалось решить мою проблему с помощью совершенно не связанной отладки.
Хотя я не уверен, что NVIDIA Nsight должна быть способна отлаживать шейдеры, по крайней мере, я думаю, что она поддерживала GLSL в некоторых предыдущих версиях (которые вы должны найти). Он довольно хорошо интегрируется с Visual Studio, это не просто, но в нем есть множество полезных вещей, но в более старых версиях для отладки шейдеров через сеть требовалось 2 машины с графическим процессором, на каждом из которых (хотя в последней версии говорится, что она позволяет выполнять «локальную» отладку) , Также проверьте Shader Designer [2], который кажется полезным IDE (но без отладки GLSL).
[1] http://developer.nvidia.com/content/nvidia-nsight-visual-studio-edition
[2] http://www.opengl.org/sdk/tools/ShaderDesigner/
источник
К сожалению, отладка opengl не легка. Вот что я нашел полезным:
источник
Лично я все еще использую RenderMonkey. Однако это не совсем подходит для этого точного вопроса, потому что это только фасад реального приложения и, следовательно, имеет некоторые странные ограничения. Это не поддерживается, но я не нашел ничего лучшего для отладки GLSL.
источник