DirectCompute 着色器:如何消除警告 X3205:'round'

DirectCompute shader: how to get rid of warning X3205: 'round'

在计算着色器模型 5 中,我得到了双精度浮点值的一些计算结果。我必须将该值分配给一个整数变量,然后收到警告:

warning X3205: 'round': conversion from larger type to smaller, possible loss of data

我理解警告,但就我而言,在运行时浮点值永远不会超过整数可接受的值。该代码产生了预期的结果,因此我想关闭针对特定违规行的警告。

我没有找到如何关闭特定警告,我喜欢编写不产生任何警告的代码,或者如果它们产生,将检查它们是否是误报。

感谢任何帮助。

您没有提供您的代码,我想它的形式是:

double doubleValue = 1.0;
int integer = round(doubleValue);

如果你想抑制警告,并且你确定你正在处理的数据不会给出有趣的结果,你可以在将 double 转换为 float 之前将其传递给 round().

double doubleValue = 1.0;
int integer = round((float)doubleValue);

此表单不会触发警告。