简而言之,我有这段代码:
vec3 contribX1 = Sample(O, D, 0);
if (std::isinf(contribX1.x)){
..do something..
}
根据我的调试,我有时会有Sample
方法返回的无限值,我必须解决它。但在此之前,我需要工具来正确调试。所以我一直在四处寻找,我发现这个std::isinf()
应该给我一个布尔。不幸的是,似乎我从未输入IF
条件,即使我能够检查contribX1.x
并且它实际上是1.#INF0000
。我做错了什么?
编辑:编译器是cl.exe ..我正在使用Visual Studio 2013
答案 0 :(得分:3)
您可以使用isfinite
来测试该值是否为有效且不连续(即无限)值:
if (!std::isfinite(contribX1.x)){
应该适合你,我认为这里的问题是有各种值用于表示正负无限值以及NaN
,在你的情况下我认为使用这个测试应该没问题。
我不了解您的平台,但对于Windows,此相关问题对我有所帮助:std::isfinite on MSVC