0

QPainterQt での描画と合成を担当しています。ドキュメントには、パフォーマンスについて説明するセクションがあります。私の質問は、次の段落の太字の文に関するものです。

Raster - このバックエンドはすべてのレンダリングを純粋なソフトウェアで実装し、QImages へのレンダリングに常に使用されます。最適なパフォーマンスを得るには、フォーマット タイプ QImage::Format_ARGB32_Premultiplied、QImage::Format_RGB32、または QImage::Format_RGB16 のみを使用してください。QImage::Format_ARGB32 を含む他の形式は、パフォーマンスが大幅に低下します。このエンジンは、デフォルトで QWidget と QPixmap に使用されます。

カラー チャンネルにアルファを乗算することは、ソース オーバー操作で行われることを理解しています。この乗算は、コンポジターで行うのを避けるために事前に行うことができます。この乗算を実行するには、RGB チャネルにアルファを乗算してから 255 で除算します (または除算を模倣するために正しい方法でオーバーフローするマジック ナンバーを乗算します)。これは、1 ピクセルあたり 6 回の整数乗算です。確かに、余分な6つの整数乗算を実行しても、「パフォーマンスが大幅に低下する」ことはありませんか?

アルファ乗算は本当に遅いですか?おそらく彼らは、そのコード パスを他のコード パスほど最適化しようとしていないと述べているだけなので、そのコード パスがどのように機能するかについての保証はありませんか?

4

2 に答える 2