使用高精度alpha混合绘图

时间:2013-04-26 16:14:33

标签: c drawing precision alphablending

我需要将大约100万个半透明矩形混合在一起,同时能够通过增加1e-6来管理透明度准确度。

通常情况下,如果我的1百万个矩形会相互重叠,我希望这些像素的正好值为1.0(对于500 000个矩形为0.5,依此类推)。

使用cairo库,理想情况如下:

const int NB_RECT = 1000000;
//[...]
cairo_set_operator(cr, CAIRO_OPERATOR_ADD);
cairo_set_source_rgba(cr, 1.0, 0, 0, 1.0/NB_RECT);
for(int i = 0 ; i < NB_RECT ; i++) {
    //[...]
    cairo_rectangle(cr, x, y, w, h);
    cairo_fill(cr);
}
// [...]

这不起作用,因为在alpha~ = 0.01以下,绘图命令似乎被简单地丢弃(可能是由于cairo内部颜色的内部表示)。

您能否建议一个处理高精度透明度或可能的解决方法的绘图库?

0 个答案:

没有答案