优化一些由不利的不透明度生成的CG代码?

时间:2012-02-24 05:04:39

标签: ios core-graphics

我怎么能写这个ios代码片段,以便它没有任何sqrt甚至更好的no *和/? (这是来自likethought opacity生成的代码)(或者甚至有必要在这里进行这种类型的优化?我只是担心这个代码会被调用很多次,因为每个帧都包含许多精灵,这将发生每个绘制任何这些框架的时间,现在就是它的编写方式..)

...
    CGRect imageBounds = CGRectMake(0.0f, 0.0f, kmy_exampleWidth, kmy_exampleHeight);
    CGRect bounds = [self bounds];
    transform = CGContextGetUserSpaceToDeviceSpaceTransform(context);
...

    resolution = sqrtf(fabsf(transform.a * transform.d - transform.b * transform.c)) * 0.5f * (bounds.size.width / imageBounds.size.width + bounds.size.height / imageBounds.size.height);

1 个答案:

答案 0 :(得分:1)

我严重怀疑这些问题。继续使代码正常工作,如果遇到性能问题,请使用Instruments查找瓶颈。如果这些函数需要花费很长时间,那么看看它是否每帧的计算值始终相同并缓存它们而不是重新评估它们。 (看一下上面的代码,我的猜测是变换矩阵总是相同的[并且行列式计算sqrtf(fabs(ta * td-tb * tc))将只是1或2,这取决于它是否是视网膜显示与否•如果imageBounds和视图边界没有改变,分辨率将不会改变。但是如果没有看到这个代码所处的上下文,这只是猜测。)