我想打开网络摄像头并用 Xlib 显示视频。因此,我打开网络摄像头,获取图像,然后执行以下操作:
for(x = 0; x < webcamX; x++){
for(y = 0; y < webcamY; y++){
pixel = GetCameraPixel(x, y);
XDrawPoint(dpy, pixmap, pixel, x, y);
}
}
XCopyArea(dpy, pixmal, window, ....);
但是,调用 XDrawPoint 太慢了。我也尝试使用 XImage,但这次 XPutPixel 和 XPutImage 都很慢(使用 Pixmap 比 XImage 快)
我认为问题在于执行 XDrawPoint 640 * 480 次会向 X 服务器发出大量请求。做XPutImage的时候也是一样,发一个640*480的图片很多..不是吗?
所以,忘记网络摄像头,想象一下我想做一个游戏,一个动画,一个视频播放器,或者任何东西,只有 XLib.. 有可能吗?我确定逐像素绘制效率不高,那我该如何做好呢?我在互联网上找到的所有信息都是使用 Pixmap 或 XImage,它比在窗口本身上绘图要好,但还不够。
例如,xscreensavers 全屏显示非常漂亮的动画(我认为他们只使用 Xlib),他们如何使动画流畅?
谢谢。