Я изучаю OpenGL и только начал изучать освещение. Я включаю освещение и свет 0, устанавливаю его ambient / diffuse / specular на значения по умолчанию в моем методе init, а затем каждый кадр я делаю примерно так:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// do my 3rd-person camera transforms and rotations
glLightfv(GL_LIGHT0, GL_POSITION, {0.1f, 0.0f, 0.0f});
(обратите внимание, если это немного не так, я пишу свое приложение на Java с использованием JOGL, поэтому я обрезал gl и GL из каждой строки для лучшей читабельности для всех вас, C ++) :))
Затем я продолжаю рисовать свои треугольники и тому подобное, и в конце я делаю glFlush ().
Странная проблема в том, что когда я запускаю свое приложение, индикатор мигает. У меня нет других вызовов glLightfv во всей моей программе (кроме упомянутых выше вызовов в моем методе init, который я отлаживал, чтобы убедиться, что он запускается только один раз). Он очень быстро мигает, и на экране появляются разрывы. Я также не делаю glDisable (GL_LIGHTING) в любой точке моей сцены; я не думаю, что это должно вызвать мерцание освещенных предметов.
Я также, для целей отладки, закомментировал куски моего кода для рисования, и, кажется, ничто не нарушает освещение - и, конечно, я написал все это и проверил перед тем, как освещать сцену, так что не вижу причин это должно быть неправильно.
В принципе, я знаю, что это не так уж и много, но кто-нибудь еще имел эту проблему раньше? Есть ли какое-то простое решение, которое я просто не могу найти? Пожалуйста, запросите любую дополнительную информацию, которая может помочь вам помочь мне. И, в конце концов, если я просто не могу получить ответ, мне, вероятно, придется сломать и написать тестовый пример, где я могу просто опубликовать здесь весь код рендеринга и продемонстрировать проблему.
Вот очень плохой анимированный GIF-файл, который я пытался сделать ... Но он как бы показывает то, о чем я говорю, поскольку свет бывает спорадическим. Подсвеченные рамки - вот как это должно выглядеть. Кроме того, он не так сильно мигает, когда я замедляю его до 5 кадров в секунду, больше просто случайно включается или выключается. Я не понимаю ...
Спасибо !!