2011-09-04 85 views
2

我有一個當前表示爲字節數組(可能是YCrCb或RGB)的位圖圖像。是否有一個函數內置到OpenGL中,允許我查看此字節數組中的各個像素?用OpenGL讀取圖像字節數組

我知道有函數glReadPixels,但我不需要從幀緩衝區讀取,如果我已經得到的數據。

如果沒有,是否有另一種方法可以在C++中做到這一點?

+0

看一看[CIMG(http://cimg.sourceforge.net/)。 –

回答

6

OpenGL是一個繪圖API,而不是某種目的的所有圖形庫 - 在OpenGL 的「L」是指應該讀爲層,而不是圖書館。這就是說:如果你知道字節數組的尺寸和數據佈局,那麼提取單個像素是微不足道的。

pixel_at(x,y) = data_byte_array[row_stride * y + pixel_stride * x] 

爲緊密壓縮格式

pixel_stride = bytes_per_pixel 
row_stride = width * pixel_stride 
+1

「OpenGL中的'L'表示層,而不是庫。」不符合OpenGL規範。在第1頁中,標題爲「什麼是OpenGL圖形系統?」的部分,第一行是「OpenGL(用於」開放圖形庫「)」。您的聲明的其餘部分是正確的。 –

+0

@Nicol Bolas:我完全意識到,正式的L意味着圖書館。但是今天應該把它看作Layer,我希望有一天這個改變會變成官方的。 – datenwolf