我即将在Mac上的Objective-C中创建一个粒子模拟器,使用Core Graphics进行渲染。我已经计算出Core Graphics能够使用CGContextFillRect每秒渲染大约1.8 * 10 ^ 6个1x1彩色像素到视图,每帧渲染到屏幕上大约250,000个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);
}