0

透明度の精度を 1e-6 単位で管理しながら、約 100 万個の半透明の四角形をブレンドする必要があります。

通常、100 万個の四角形を重ねて描画する場合、これらのピクセルのアルファ値を正確に 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 内の色の内部表現による)。

高精度の透明度を処理する描画ライブラリ、または可能な回避策を提案できますか?

4

0 に答える 0