レンダリングに Core Graphics を使用して、Mac 上の Objective-C でパーティクル シミュレータを作成しようとしています。Core Graphics は、CGContextFillRect を使用してビューに毎秒約 1.8*10^6 1x1 カラー ピクセルをレンダリングできると計算しました。これは、FPS が60。
250,000 個のパーティクルの制限はそれほど大きくありません。この数をもっと増やしてほしいです。この多くの 1x1 のカラー ピクセルをビューにレンダリングする最も効率的な方法は何ですか? GPU をより有効に活用する方法はありますか?
これは私が使用しているコードです:
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
CGContextRef ctx = [[NSGraphicsContext currentContext] graphicsPort];
CGContextSetRGBFillColor (ctx, 1, 0, 0, 1);
CFTimeInterval t1 = CFAbsoluteTimeGetCurrent();
CGRect point = CGRectMake(10.0f, 10.0f, 1.0f, 1.0f);
for (int i = 0; i < 20000000; i++) {
CGContextFillRect (ctx, point);
}
NSLog(@"%.10f", CFAbsoluteTimeGetCurrent() - t1);
}