Shader修改颜色出现不透明框

原本想做个shader,用来完成对图片色相,饱和度,亮度的调整,结果根据转换算法描述写完之后发现一个很严重的问题,就是原本图片是透明的地方在调整了亮度之后出现了不透明的色块(仅增大会出现)。后来将shader简化,仅将图片做红偏色。原图如下: 无标题2 结果做完shader变成下面这样: [cpp]gl_FragColor = vec4(r + 0.3, g, b, a);[/cpp] 无标题 经过一番尝试,后来发现改成这样均正常 [cpp]gl_FragColor = vec4(r * 1.3, g, b, a);[/cpp] [cpp]gl_FragColor = vec4(r + r * 0.3, g, b, a);[/cpp] 无标题1 总结,大抵是shader里面不能直接用加减单位来修改RGB值,只能用乘除法来做,大概猜测是因为色彩的单位并不是我们以为的[0, 1]吧,具体原因以后再具体分析吧。