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

0

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

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

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

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

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

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

  • 3
    Вам нужно создать минимальный пример кода и опубликовать его. Смотрите ( stackoverflow.com/help/mcve )
  • 0
    Используйте valgrind ; это должно указать, где ваш код читает неинициализированную память.
Теги:
raytracing
non-deterministic

1 ответ

1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню