我们有一台线扫描相机,每秒可生成 300 张线图像。我们希望以 FIFO 的方式在图像视图上显示线条,以便视图的最后一行显示最新的线条图像,同时将先前的线条移到上方以进行线条更新。
如果我可以像过去一样访问 C 中的视频内存,我会这样做
memcpy(videoMem, videoMem+lineWidth*pixelSize, pixelSize*lineWidth*(nLines-1));
memcpy(videoMem+pixelSize*lineWidth*(nLines-1),newLine,lineWidth*pixelSize);
但我不知道这是否是我能做到的最好的,即使是直接访问视频内存。
现在我知道直接访问视频内存是不可能的,也不可取。在这种情况下,最好的方法是什么?专家的任何意见将不胜感激。
它是 Windows 7 中的台式电脑应用程序。
更新
正如我所料,似乎我必须处理一种循环缓冲区。就我而言,棘手的部分是逐行写入缓冲区,而逐屏读取。所以end
指针到达缓冲区的物理末端,需要额外的内存副本才能将屏幕内存传递给视频。我想 Bip 缓冲区将是一个解决方案。还有什么想法吗?