4

我有一个 C++ Open GL 应用程序,它呈现动画显示,并使用 glReadPixels() 捕获帧缓冲区内容,然后将其存储为一维字符数组。

我可以获取缓冲区内容并将其保存到 char 数组中,如下所示:

char * values = (char *) malloc(width * height * 4 * sizeof(char));
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, values);

然后我使用套接字通过网络发送这些原始数据,这对我来说不是问题。我有一个 Qt 桌面客户端(它使用套接字与 OpenGL 应用程序通信)

此客户端程序可以成功接收 Open GL 应用程序发送的原始二进制数据。

如何在我的客户端应用程序中从这些二进制数据中渲染图像?Qt 是否有任何内置函数/库来从二进制数据(由 glReadPixels 生成)绘制图像?

在通过套接字发送它们之前,我是否需要将这些原始二进制数据编码/解码为 base64 类型?为什么或者为什么不?

4

1 回答 1

1

QImage 有一个很好的构造函数,它接受一个现有的缓冲区、一个宽度、一个高度和一个像素格式。这似乎是一个很好的起点。

如果您在服务器上创建 QImage,您可以使用Qt 的内置流向您的客户端发送 QImage(QDataStreams 可以包装几乎任何 IO 设备,包括网络套接字),因此无需进行任何编码和解码你自己 - Qt 会为你处理一切。

希望有帮助!

于 2012-03-21T03:09:51.603 回答