QPainter
负责Qt中的绘图和合成。文档中有一个部分讨论了性能。我的问题是关于下一段中的粗体句子。
Raster - 这个后端在纯软件中实现所有渲染,并且总是用于渲染到 QImages 中。为获得最佳性能,仅使用格式类型 QImage::Format_ARGB32_Premultiplied、QImage::Format_RGB32 或 QImage::Format_RGB16。任何其他格式,包括 QImage::Format_ARGB32,性能明显较差。该引擎默认用于 QWidget 和 QPixmap。
我知道将颜色通道乘以 alpha 是在源操作中完成的。这种乘法可以提前完成,以避免在合成器中进行。执行此乘法涉及将 RGB 通道乘以 alpha,然后除以 255(或乘以某个以正确方式溢出以模仿除法的幻数)。这是每像素六个整数乘法。当然执行额外的六个整数乘法不会有“明显更差的性能”?
阿尔法乘法真的那么慢吗?也许他们只是说他们不会像其他人那样尝试优化该代码路径,因此不能保证它的执行方式?