苦苦挣扎X11原始光栅

问题描述 投票:0回答:1

[前言:我已经为此寻找了一条直接道路,已有多年了。]

我从远程设备获得原始光栅(1024x600,RGB / 565)。我想在一个简单的X11窗口中显示它。因为它代表屏幕刮擦,它需要快速/接近实时(30 fps min)。我找到了将每个像素插入Pixmap / Bitmap的方法,但必须有办法将整个栅格blob传递给Pixmap / Bitmap。有人可以帮忙吗?我只需要一条直接路径:

data [] - > Pixmap - >绘制到窗口。

uint8_t buffer[1024*600*2];
int byte_cnt = recv(client_sd, buffer, sizeof(buffer), MSG_WAITALL);
???; //--convert to Pixmap/Bitmap
???; //--paint in window

我无法从源发送位图,因为我将运行一个简单的RLE(行程编码器)来加快数据速率。

谢谢,

苏,他们(限制/奴隶)

sockets window screen-scraping x11 raster
1个回答
2
投票

您可以使用XPutImage在一个请求中将整个2d光栅图像发送到drawable(Pixmap或Window)。你必须在发送之前在客户端解码rle(也可能从rgb 565转换为格式x服务器支持)

如果客户端和服务器在同一台物理机器上(e.i共享相同内存),您可以使用MIT-SHM扩展加速 - 请参阅qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.