C++: недетерминированное поведение в выходных данных Ray Tracer

Я пишу трассировщик лучей и уже смог визуализировать сферы и плоскости с затенением Фонга.

Однако я получаю очень странное поведение с моими треугольниками. Всякий раз, когда я запускаю программу, треугольник, кажется, принимает произвольный цвет (даже без перекомпиляции). Я новичок в C++, и я понятия не имею, что вообще может быть причиной этого, поскольку с другими объектами все в порядке, и все они наследуют один и тот же метод для вычисления своих цветов.

Треугольник чаще всего будет черным, но иногда может иметь один оттенок синего, красного или розового (могут быть и другие цвета, но это не точно). Что я заметил, так это то, что каждый оттенок согласован, вероятно, со значениями RGB, равными 1 или 0, я бы предположил, что синий, например, будет (0,0,1), основываясь на моем наблюдении.

Мой вопрос в том, что может быть возможной причиной этого странного недетерминизма? Это немного сбивает меня с толку, но опять же, я новичок в C++. Является ли это общей проблемой для трассировки лучей? Может ли это быть объектная ориентация или проблема с указателем/ссылкой?

Я могу предоставить более подробную информацию, если это необходимо, я просто понятия не имею, почему это происходит.

Спасибо за помощь!


person Fat-chunk    schedule 16.11.2014    source источник
comment
Вам нужно создать минимальный пример кода и опубликовать его. См. (stackoverflow.com/help/mcve)   -  person Craig S. Anderson    schedule 16.11.2014
comment
Используйте valgrind; он должен указывать, где ваш код читает неинициализированную память.   -  person R Samuel Klatchko    schedule 16.11.2014


Ответы (1)


Наиболее вероятной причиной недетерминизма является неинициализированная, но используемая переменная в вашем коде.

person Alexander V    schedule 16.11.2014