OpenGLES下进行渲染

来源:互联网 发布:水利网络培训 编辑:程序博客网 时间:2024/06/06 14:20

头文件加上#import <GLKit/GLKit.h>


@property(nonatomic,strong)GLKView *glkView;

@property(nonatomic,strong)CIFilter *filter;

@property(nonatomic,strong)CIImage *ciImage;


@property(nonatomic,strong)CIContext *ciContext;


 UIImage *showImage = [UIImageimageNamed:@"demo"];

   CGRect rect = CGRectMake(0,0, showImage.size.width, showImage.size.height);

    

    //获取OpenGLES渲染的上下文

    EAGLContext *eagContext = [[EAGLContextalloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

    //创建出渲染的butter

   _glkView = [[GLKViewalloc] initWithFrame:rectcontext:eagContext];

    [_glkViewbindDrawable];

    [self.viewaddSubview:_glkView];

    //创建出CoreImage用的上下文

    _ciContext = [CIContextcontextWithEAGLContext:eagContext options:@{kCIContextWorkingColorSpace:[NSNullnull]}];

    

    //CoreImage相关的设置

   _ciImage = [[CIImagealloc] initWithImage:showImage];

    _filter = [CIFilterfilterWithName:@"CISepiaTone"];

    [_filtersetValue:_ciImageforKey:kCIInputImageKey];

    [_filtersetValue:@(0)forKey:kCIInputIntensityKey];

  //  NSLog(@"%@",_filter.attributes);

    

    //开始渲染

    [_ciContextdrawImage:[_filteroutputImage]

                  inRect:CGRectMake(0,0, _glkView.drawableWidth,_glkView.drawableHeight)

                fromRect:[_ciImageextent]];

    [_glkViewdisplay];

    

    //动态渲染

   UISlider *slider = [[UISlideralloc] initWithFrame:CGRectMake(0,400, 320, 20)];

    slider.minimumValue =0.f;

    slider.maximumValue =1.f;

    [slider addTarget:selfaction:@selector(sliderEvent:)forControlEvents:UIControlEventValueChanged];

    [self.viewaddSubview:slider];


-(void)sliderEvent:(UISlider *)slider{


    [_filtersetValue:_ciImageforKey:kCIInputImageKey];

    [_filtersetValue:@(slider.value)forKey:kCIInputIntensityKey];

    

    //开始渲染

    [_ciContextdrawImage:[_filteroutputImage] inRect:CGRectMake(0,0, _glkView.drawableWidth,_glkView.drawableHeight ) fromRect:[_ciImageextent]];

    [_glkViewdisplay];

}



0 0
原创粉丝点击