Search code examples
directxhlsldirectcompute

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


In a compute shader model 5, I have the result of some computation in a double precision floting point value. I have to assign the value to an integer variable and I get the warning:

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

I understand the warning but in my case, at runtime the floating point value will never exceed the value acceptable for an integer. The code produce the expected result so I want to shut off that warning for the specific offending line.

I don't find how to turn off specific warning and I like to write code that do not produce any warning or if they are, they are checked to see if they are false alarm or not.

Any help appreciated.


Solution

  • You did not supply your code, and I suppose it was something in the form of:

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

    If you want to suppress the warning, and you are sure the data you are dealing with will not give funny results, you can cast the double to a float before passing it to round().

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

    This form does not trigger the warning.