我像通常那样将 OpenGL 纹理 2D 中的像素读取到字节数组(无符号字符)中。但现在我需要将其转换为图像数组(我想是整数),以便从 CPU 加载图像的布局和像素范围逆过程。我的问题是 - 仅仅做就足够了:
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 范围内吗?