我正在编写一个光线跟踪器,并且已经能够使用Phong阴影渲染球体和平面。
然而,我对三角形的行为非常奇怪。每当我运行程序时,三角形似乎采用任意颜色(即使没有重新编译)。我是C ++的新手,我不知道是什么原因导致这个因为其他对象都很好,并且它们都继承了相同的方法来计算它们的颜色。
三角形最常见的是黑色,但偶尔会出现蓝色,红色或粉红色的单一色调(可能还有其他颜色,但不确定)。我注意到每个阴影是一致的,可能RGB值为1或0,我猜想蓝色例如是(0,0,1)基于我的观察。
我的问题是,这种奇怪的非决定论可能是什么原因?这有点令我感到困惑,但我又是C ++的新手。这是射线追踪的常见问题吗?它可能是面向对象,还是指针/引用问题?
如果需要,我可以提供更多细节,我只是不知道为什么会发生这种情况。
感谢您的帮助!
答案 0 :(得分:1)
非确定性的最可能原因是代码中未初始化但使用过的变量。