2011-03-11 31 views
1

iphone 3gs相機的本機色彩空間爲YpCbCr 4:2:0。我打算在opengl中做很多亮度處理(雖然我也會做一些顏色)。有沒有一種有效的方法來獲取框架的opengl?如何將完整的YUV(YpCbCr)4:2:0幀傳遞給opengl

我已經成功使用GL_LUMINANCE進行glteximage2ding以獲得亮度。只有顏色數據,我還沒有成功通過另一個glteximage2d通行證。除了兩次傳球之外,還有更好的方法嗎?如果不是,它甚至值得嗎?

回答

4

我通過將每個通道放入自己的GL_LUMINANCE紋理並在片段着色器中執行顏色空間轉換來實現此目的。

+1

假設使用三種不同的紋理,以便您可以直接上傳返回的AVFoundation緩衝區,而不必在CPU上進行字節混洗? – Tommy 2011-03-11 20:56:52

+0

聽起來像它會工作,但不知道由於額外的gltextimage2d調用是否值得它性能明智。 – akaru 2011-03-12 00:27:20

+0

@Tommy:實際上,我使用三種不同的紋理來允許通道中具有不同的空間分辨率,就像在色度子採樣格式中一樣(YpCbCr 4:2:0是這種格式)。德國維基百科有一個很好的圖表,顯示了不同的修改:http://de.wikipedia.org/wiki/Farbunterabtastung#Bezeichnungsschema除了着色器之外,還可以使用多次通過和混合modi的巧妙組合,但坦率地說:着色器在當前的硬件上更容易實現並且性能更好。 – datenwolf 2011-03-12 01:06:53

相關問題