我正在尝试创建一个简单的软件渲染引擎。因此,我正在寻找以像素为单位绘制UIView
像素的最佳方式。
这是我尝试过的:
drawRect:
CGContext
创建CGBitmapContextCreate
并手动绘制这两个都给了我可怕的帧速率,大约15 fps。
有没有人知道以更高效的方式绘制每像素像素的方法?
答案 0 :(得分:2)
尝试将UIImageView添加为视图的子视图,并使用drawRect外的渲染图像设置它的图像属性:
- (void)renderImageInRect:(CGRect)rect {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIGraphicsBeginImageContext(rect);
//draw...
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
dispatch_async(dispatch_get_main_queue(), ^{
self.imageView.image = image;
});
UIGraphicsEndImageContext();
}
}
另一种解决方案是在GPUImage
中使用OpenGL ES修改强> 另一种基于CALayer的解决方案,没有UIImageView子视图。
只需更改代码行:
self.imageView.image = image;
with:
self.layer.contents = (id) image.CGImage;