C++ C++;SFML Sprite.setColor(sf::Color)详细信息

C++ C++;SFML Sprite.setColor(sf::Color)详细信息,c++,colors,render,sfml,C++,Colors,Render,Sfml,我试图在SFML中复制在实体图像上具有半透明颜色层的效果。我有我的基本图像,它在SFML中渲染得很好。在我的图像编辑器中,我在图像上有许多层来创建图像的各种彩色实例。例如,我使用的第一个红色层的RGBA值为222、14、14、128。当我在基础图像的sprite上使用SFML的setColor方法(使用相同的RGBA代码)时,最终图像的颜色不一样,并且看起来不那么生动。我是否误解了该方法的用法,或者这是某种错误?有什么方法可以得到图像编辑器给我的相同颜色吗?SFML的setColor函数使用乘法

我试图在SFML中复制在实体图像上具有半透明颜色层的效果。我有我的基本图像,它在SFML中渲染得很好。在我的图像编辑器中,我在图像上有许多层来创建图像的各种彩色实例。例如,我使用的第一个红色层的RGBA值为222、14、14、128。当我在基础图像的sprite上使用SFML的setColor方法(使用相同的RGBA代码)时,最终图像的颜色不一样,并且看起来不那么生动。我是否误解了该方法的用法,或者这是某种错误?有什么方法可以得到图像编辑器给我的相同颜色吗?

SFML的setColor函数使用乘法。如果你使用纯白(255255)的颜色,雪碧看起来是一样的。当您在图像编辑器中将颜色描述为不太“生动”时,我怀疑您的图层使用的是颜色添加,而不是倍增。

我发现问题在于alpha级别;它将实际图像的alpha设置为128,而不是像我预期的那样在原始图像的alpha值上创建颜色覆盖。因此,当它以半透明方式渲染时,它将与后面的颜色混合。