将opengl屏幕转换为字节并返回到纹理

时间:2017-08-30 07:14:04

标签: opengl unity3d textures

我有一个opengl软件,它生成一个窗口,然后通过套接字将其字节发送到统一。 opengl软件检索数据:

glreadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE, buffer);

其中'缓冲区'是byte []缓冲区,它被发送到统一应用程序。在那里,我尝试将其转换回图像:

Texture2D t = new Texture(width,hight,Textureformat.ETC2_RGB,false);
t.LoadRawTextureData(buffer);
t.Applay();

然而,纹理会像黑色屏幕一样呈现出色彩斑斓的色彩,这些色彩会在周期性地移动和消失。 我选择了' ETC2_RGB'格式,因为它看起来相关,但我也尝试了TextureFormat的更多格式,并且所有格式看起来都是白色\黑色,带有彩色圆点\粉红色等等。我应该选择哪种正确的转换?

1 个答案:

答案 0 :(得分:0)

您使用的是错误的纹理格式。 ETC2_RGB是一种压缩格式,每像素4位。您从glReadPixel查询的是未压缩格式,每个通道8位。格式为Textureformat.RGB24