Я пишу трассировщик лучей и уже смог отрисовать сферы и плоскости с затенением Фонга.
Однако со своими треугольниками у меня очень странное поведение. Каждый раз, когда я запускаю программу, кажется, что треугольник принимает произвольный цвет (даже без перекомпиляции). Я новичок в C ++, и я понятия не имею, что вообще может быть причиной этого, поскольку другие объекты в порядке, и все они наследуют один и тот же метод для вычисления своих цветов.
Треугольник чаще всего будет черным, но иногда будет одного оттенка синего, красного или розового (могут быть другие цвета, но не уверен). Я заметил, что каждый оттенок соответствует, вероятно, со значениями RGB, равными 1 или 0, я бы предположил, что синий цвет, например, (0,0,1) основан на моих наблюдениях.
У меня вопрос, что может быть причиной этого странного недетерминизма? Это отчасти сбивает с толку меня, но опять же я новичок в C ++. Это общая проблема трассировки лучей? Может ли это быть объектная ориентация или проблема с указателем / ссылкой?
Я могу предоставить больше деталей, если это необходимо, я просто понятия не имею, почему это происходит.
Спасибо за помощь!
Наиболее вероятной причиной недетерминизма является неинициализированная, но используемая переменная в вашем коде.