2011-09-04 92 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