我将OpenGL纹理2D中的像素读入字节数组(无符号字符),因为它通常是完成的。但是现在我需要将其转换为图像数组(我认为是整数)从CPU加载的用于反向处理的图像的布局和像素范围。 我的问题是 - 它是滥竽充数的事:的OpenGL将RGBA字节像素转换为图像整数阵列
glGetTexImage(GL_TEXTURE_2D,0,GL_RGBA,GL_UNSIGNED_INT,bytes);
代替:
glGetTexImage(GL_TEXTURE_2D,0,GL_RGBA,GL_UNSIGNED_BYTE,bytes);
,然后遍历每个整数,它从0-1范围内转换为0-255? 我还没有真正发现没有使用3方图像库进行这样的转换的任何示例。
如果我这样做:
size_t lenght=_viewWidth * _viewHeight ;
GLubyte *bytes=(GLubyte*)malloc(lenght);
/////////////// read pixels from tex /////////////////////
glBindTexture(GL_TEXTURE_2D,tex);
glGetTexImage(GL_TEXTURE_2D,0,GL_BGR,GL_UNSIGNED_BYTE,bytes);
uint8_t Rc, Gc, Bc;
for(x = 0; x < lenght; x+=3)
{
Bc = *bytes + x;
Gc = *bytes + x + 1;
Rc = *bytes + x + 2;
}
为RC,GC和BC要在0-255范围?
如果我的纹理具有RGBA和RGBA8作为内部格式,并且我将它读作无符号字节,那么tee数据的范围是0-255吗? – 2013-03-14 19:14:30
是的。在这种情况下,甚至不应该进行任何转换,因为RGBA8很可能使用无符号字节来存储组件。 – radical7 2013-03-14 19:41:44