美文网首页
GPUImage源码解析(2)—— GPUImageContex

GPUImage源码解析(2)—— GPUImageContex

作者: Don_He | 来源:发表于2019-04-10 19:30 被阅读0次

    GPUImageContext负责管理OpenGL context已经当前context处理任务用到的资源,包括GLProgram、CVOpenGLESTextureCacheRef、GPUImageFramebufferCache。

    GPUImageContext的源码并不是很复杂,不过.h文件中声明的属性和方法有点乱,下面将对.h文件的属性和方法进行分类,然后对应着看.m文件中的相关实现就能很快缕清关系:

    // GPUImageContext.h
    
    // 上下文相关
    @property(readonly, retain, nonatomic) EAGLContext *context; // 获取当前上下文
    + (GPUImageContext *)sharedImageProcessingContext; // 创建上下文单例
    + (void)useImageProcessingContext; // 创建上下文单例,并设置为当前上下文
    - (void)useAsCurrentContext; // 设置为当前上下文
    - (void)useSharegroup:(EAGLSharegroup *)sharegroup; // 使用EAGLSharegroup
    
    @property(readonly, nonatomic) dispatch_queue_t contextQueue; // 上下文队列
    + (dispatch_queue_t)sharedContextQueue; // 同上
    + (void *)contextKey; // 上下文的key,用于获取当前队列的
    
    // 着色器程序相关
    @property(readwrite, retain, nonatomic) GLProgram *currentShaderProgram; // 当前着色器程序
    + (void)setActiveShaderProgram:(GLProgram *)shaderProgram; // 设置为当前的着色器程序
    - (void)setContextShaderProgram:(GLProgram *)shaderProgram; // 设置为当前的着色器程序
    - (GLProgram *)programForVertexShaderString:(NSString *)vertexShaderString fragmentShaderString:(NSString *)fragmentShaderString; // 新建或从缓存中获取着色器程序
    
    // 缓存相关
    @property(readonly) CVOpenGLESTextureCacheRef coreVideoTextureCache;
    @property(readonly) GPUImageFramebufferCache *framebufferCache;
    + (GPUImageFramebufferCache *)sharedFramebufferCache;
    
    // 获取硬件支持信息
    + (GLint)maximumTextureSizeForThisDevice;
    + (GLint)maximumTextureUnitsForThisDevice;
    + (GLint)maximumVaryingVectorsForThisDevice;
    + (BOOL)deviceSupportsOpenGLESExtension:(NSString *)extension;
    + (BOOL)deviceSupportsRedTextures;
    + (BOOL)deviceSupportsFramebufferReads;
    + (BOOL)supportsFastTextureUpload;
    
    // 适应设备支持的最大尺寸
    + (CGSize)sizeThatFitsWithinATextureForSize:(CGSize)inputSize;
    
    // 展示当前已渲染的buffer
    - (void)presentBufferForDisplay;
    

    相关文章

      网友评论

          本文标题:GPUImage源码解析(2)—— GPUImageContex

          本文链接:https://www.haomeiwen.com/subject/bknoiqtx.html