2012-12-15 49 views
2

我是新來的GPUImage庫。GPUImage:如何不同的過濾器應用於圖像,規模下來,瓦結果輸出圖像

我用它來從相機獲得幀,並實時進行篩選。我正在爲我正在開發的過濾器使用不同的過濾器參數。

我想出如何在攝像機圖像過濾器具有不同的過濾器平行的,但我想現在要做的就是輸出,其中4個過濾圖像平鋪在一起做一個大輸出圖像的結果圖像。

我的想法是,我可以鏈接GPUImageTransformFilter實例和GPUImageAddBlendFilter實例來獲取合成圖像。例如,在向下縮放的兩個圖像,並通過側把它們側的最簡單的情況:

self.transform1 = [[GPUImageTransformFilter alloc] init]; 
_transform1.affineTransform = CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5); 

self.transform2 = [[GPUImageTransformFilter alloc] init]; 
_transform2.affineTransform = CGAffineTransformTranslate(CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5), 1.0, 0.0); 

self.blendFirst1 = [[GPUImageAddBlendFilter alloc] init]; 

[_transform1 addTarget:_blendFirst1]; 
[_transform2 addTarget:_blendFirst1]; 

然而這導致在被縮放並重疊兩個圖像彼此和結果被翻譯到圖像用的邊緣另一半是空的。

我會很感激關於如何擴展的指針和瓷磚的圖像,使一個大的圖像。

非常感謝!

回答

4

雖然你可以做到這一點與轉換,你看三個融合,讓您的四象成一個靜止畫面。這不會是實現這一目標的最快或最有效的內存路徑。

相反,我建議繼承GPUImageTwoInputFilter或創建一個全新的多輸入過濾器,然後使用該過濾器將所有四個圖像拉入以進行渲染。人們通過這樣做了三個或四個濾波器輸​​入混合,這可能是您最有效的途徑。

片段着色器爲您的過濾器可能使4個四邊形,一個用於每個輸入圖像,或有選擇性地從四個紋理採樣,以提供在給定像素中的適當的顏色着色。前者會更快,但可能需要您在修改基本混合過濾器時編寫更多的OpenGL ES代碼。後者將對頂點和片段着色器使用簡單的調整,但這些着色器中的條件可能會減慢速度。

相關問題