Objective-C中粒子模拟的最佳方法

时间:2013-10-17 11:22:34

标签: objective-c macos core-graphics quartz-graphics

我即将在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);
}

0 个答案:

没有答案