Iphone 径向渐变绘制性能-OpenGL ES可以改进吗?
我正在开发一个图像处理应用程序,它将径向渐变覆盖在从照片库加载的图像上 在屏幕上,我有一个滑块,可以动态调整/减小径向渐变的半径。我发现模拟器的性能还不错,但在iPhone3G或3GS上,移动滑块时重新绘制要慢得多 我目前正在使用Iphone 径向渐变绘制性能-OpenGL ES可以改进吗?,iphone,opengl-es,ios4,ios,Iphone,Opengl Es,Ios4,Ios,我正在开发一个图像处理应用程序,它将径向渐变覆盖在从照片库加载的图像上 在屏幕上,我有一个滑块,可以动态调整/减小径向渐变的半径。我发现模拟器的性能还不错,但在iPhone3G或3GS上,移动滑块时重新绘制要慢得多 我目前正在使用CGContextDrawRadialGradient进行绘图。每次重画我都会遵循以下步骤: 创建图形上下文:UIGraphicsBeginImageContext(大小) 创建渐变对象:CGGradientCreateWithColorComponents 将图像(从
CGContextDrawRadialGradient
进行绘图。每次重画我都会遵循以下步骤:
UIGraphicsBeginImageContext(大小)
李>
CGGradientCreateWithColorComponents
drawInRect
CGContextSetBlendMode
CGContextDrawRadialGradient
UIGraphicsEndImageContext()代码>
drawInRect
谢谢。以下是一些可以提高性能的想法
(假设使用渐变向图像添加渐晕):
- 将图像绘图缓存在与视图大小相同的
中,这样可以避免每次需要绘制图像时进行缩放CGLayer
- 将径向渐变的图形缓存到另一个
中CGLayer
- 当您需要显示结果时:
- 绘制图像层
- 然后是叠加混合设置
- 然后是梯度层
- 所有内容都将显示在视图的图形上下文中
- 当用户移动滑块时,您可以:
- 重新绘制渐变层然后绘制构图
- 在缩放渐变层时重新绘制构图,当使用者将手指从滑块上提起时,重新绘制渐变层,然后再次合成