これらの2つの機能は現在私のボトルネックです。私は非常に大きなビットマップを扱っています。CGContextFillRectとCGContextDrawImageのパフォーマンスを改善するには
パフォーマンスを向上させるにはどうすればよいですか?
これらの2つの機能は現在私のボトルネックです。私は非常に大きなビットマップを扱っています。CGContextFillRectとCGContextDrawImageのパフォーマンスを改善するには
パフォーマンスを向上させるにはどうすればよいですか?
最初に描画する前に作成したビットマップのより小さなバージョンをキャッシュして、本格的な15メガピクセルのものの代わりに縮小されたサンプルを単純に描画できます。
次に、 'drawRect:(NSRect)rect'は、必要なものだけを描画していることを再度確認します(絶対に必要な場合を除き)。そして、その方法の外で図面を実行しないでください。
フォアグラウンドのコンテンツが移動する大きな背景画像を描画する場合は、レイヤーを追加してその背景画像を設定して、レイヤーバックのNSView
を使用することを検討してください。その後、背景レイヤーの上の他のレイヤー(またはレイヤーバックNSViews
)にコンテンツを描画することができ、GPUのテクスチャーメモリーに保存されているので、バックグラウンドイメージを再描画する必要はありません。あなたの現在のイメージは1つのCALayer
(CALayer
は2048 x 2048の最大OpenGLテクスチャサイズに制限されています)で大きすぎますので、おそらくタイルに分割する必要があります。
そうしないと、実際に更新が必要なビューの部分だけを再描画するようにしてください。
あなたは私たちに多くを与えているわけではありません。あなたが描いているもの、ビットマップのサイズ、そしてあなたが見ているパフォーマンスの問題の種類を記述してください。関連する図面コードも記入してください。 –
サイズ2930 x 5750ピクセルのビットマップを使用します(各ピクセルはRGBAの4バイトです)。 CGContextFillRect(と前にCGContextSetRGBFillColor)を使ってビットマップを背景色で塗りつぶします。 –