将 opengl 屏幕转换为字节并统一返回到纹理
Converting an opengl screen to bytes and back to Texture in unity
我有一个生成 window 的 opengl 软件,然后通过套接字将其字节发送到 unity。
opengl软件检索数据:
glreadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE, buffer);
其中 'buffer' 是发送到 unity 应用程序的 byte[] 缓冲区。我尝试通过以下方式将其转换回图像:
Texture2D t = new Texture(width,hight,Textureformat.ETC2_RGB,false);
t.LoadRawTextureData(buffer);
t.Applay();
然而,纹理显示为带有彩色污渍的黑色屏幕,这些污渍循环移动和消失。
我选择了 'ETC2_RGB' 格式,因为它看起来很相关,但我也尝试了一些来自 TextureFormat 的格式,它们看起来都像 white\black 和彩色 dots\pink 等。什么是我应该选择正确的转换?
您使用了错误的纹理格式。 ETC2_RGB
是一种压缩格式,每像素 4 位。您从 glReadPixel
查询的是每通道 8 位的未压缩格式。格式为 Textureformat.RGB24
.
我有一个生成 window 的 opengl 软件,然后通过套接字将其字节发送到 unity。 opengl软件检索数据:
glreadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE, buffer);
其中 'buffer' 是发送到 unity 应用程序的 byte[] 缓冲区。我尝试通过以下方式将其转换回图像:
Texture2D t = new Texture(width,hight,Textureformat.ETC2_RGB,false);
t.LoadRawTextureData(buffer);
t.Applay();
然而,纹理显示为带有彩色污渍的黑色屏幕,这些污渍循环移动和消失。 我选择了 'ETC2_RGB' 格式,因为它看起来很相关,但我也尝试了一些来自 TextureFormat 的格式,它们看起来都像 white\black 和彩色 dots\pink 等。什么是我应该选择正确的转换?
您使用了错误的纹理格式。 ETC2_RGB
是一种压缩格式,每像素 4 位。您从 glReadPixel
查询的是每通道 8 位的未压缩格式。格式为 Textureformat.RGB24
.