我想实现'绘图模式'(在我自己的图形库中)。
用AND,OR等绘图 但是我使用浮点数存储颜色,每个通道介于0和1.0之间 在使用AND,OR等绘图模式之前,我是否必须首先将每个颜色通道转换为0-255?然后转换回float(0.0-1.0)?
还是有另一种方式吗?
感谢
答案 0 :(得分:2)
我认为问题不够明确。 AND,OR等是布尔运算符。许多语言也支持按位版本。因此,您首先需要定义AND-ing或OR-ing两个颜色值的确切含义。什么是红色和绿色?是黑色吗?
如果上述问题的答案是肯定的,那么您可能希望在颜色的(整数)RGB表示中按位意义应用这些运算符。在这种情况下,您需要: 1.将浮点数转换为(8位或其他分辨率)整数 2.将3个通道(或带有Alpha的4个)打包成一个字(可能是32位整数) 3.应用按位运算符 4.打开通道并转换回浮子。
请注意,在将浮点数转换为int时,首先需要将浮点值乘以MAX_COLOR(在您的示例中为255),然后进行强制转换。否则,你最终将所有通道都设为0.当你转换回浮点数时,首先进行转换,然后除以MAX_COLOR以规范化你的值。