Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clamp 如何钳制3个值?_Clamp - Fatal编程技术网

Clamp 如何钳制3个值?

Clamp 如何钳制3个值?,clamp,Clamp,我想确保3个valeus加起来等于1。 这些值是浮点数,似乎不可能使用双精度 我在DirectX和C++中,当我把它们加在一起时,它们都变成1,但是当我把它们发送给顶点着色器时,它们只会增加到0.999999,并且会引起很多问题。 我想饱和他们或什么,使他们成为一个当加在一起,但我不知道如何。 例如,一个值可以是0.2,另一个值可以是0.2,第三个值可以是0.6,但是有更多的数字,当我将它们发送到着色器而不是1时,它们相加为0.99 我用它们来缩放不同的矩阵 所以它们一起变成1很重要。为什么总和

我想确保3个valeus加起来等于1。 这些值是浮点数,似乎不可能使用双精度

我在DirectX和C++中,当我把它们加在一起时,它们都变成1,但是当我把它们发送给顶点着色器时,它们只会增加到0.999999,并且会引起很多问题。 我想饱和他们或什么,使他们成为一个当加在一起,但我不知道如何。 例如,一个值可以是0.2,另一个值可以是0.2,第三个值可以是0.6,但是有更多的数字,当我将它们发送到着色器而不是1时,它们相加为0.99

我用它们来缩放不同的矩阵


所以它们一起变成1很重要。

为什么总和是1而不是0.999999很重要?这不应该是个问题。依靠精确的浮点值(没有任何容错能力)通常是个坏主意。你可以在顶点着色器中将它们相加,然后除以和,但我认为这有点异味。在任何情况下,浮点算术(包括除法)都会根据定义引入错误,这甚至是不可能实现的