GPUImage的filter的textures處理鏈式結(jié)構(gòu)
兩個最重要的的地方:
最重要的一個類GPUImageOutput(所有的filter的父類,其他也有繼承它的,如GPUImageUIElement,UIKit元素通過CG轉(zhuǎn)gles貼圖 等等);
協(xié)議(或者接口)GPUImageInput。
繼承GPUImageOutput且遵循GPUImageInput的filter,處理完成后輸出又可以作為下一個filter的輸入。
@protocol GPUImageInput <NSObject> - (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex;- (void)setInputFramebuffer:(GPUImageFramebuffer *)newInputFramebuffer atIndex:(NSInteger)textureIndex;- (NSInteger)nextAvailableTextureIndex;- (void)setInputSize:(CGSize)newSize atIndex:(NSInteger)textureIndex;- (void)setInputRotation:(GPUImageRotationMode)newInputRotation atIndex:(NSInteger)textureIndex;- (CGSize)maximumOutputSize;- (void)endProcessing;- (BOOL)shouldIgnoreUpdatesToThisTarget;- (BOOL)enabled;- (BOOL)wantsMonochromeInput;- (void)setCurrentlyReceivingMonochromeInput:(BOOL)newValue;@end
GPUImageFramebuffer
framebuffer的封裝類,根據(jù)onlyGenerateTexture 判斷 只生成紋理 或 framebuffer;摘自 - (void)generateFramebuffer;
只生成紋理的情況典型:GPUImageUIElement,GPUImageVideoCamera等等;
生成framebuffer,判斷是否支持快速上傳紋理數(shù)據(jù)(其實是判斷CVOpenGLESTextureCacheCreate是否可用)