在我的OpenGL应用程序中,由于显而易见的原因,我想要防止屏幕撕裂。到目前为止,我一直在使用vsync。但我想用翻页缓冲区交换(更改指向监视器数据的指针而不是更改值)来代替它,以提高性能。我的问题是:重要的窗口系统(Windows、Cocoa、X11)是否支持这种缓冲区交换,需要显式请求还是默认行为?
发布于 2013-01-12 19:55:56
V-Sync是“垂直回溯同步”。如果启用了V-Sync,则意味着当显示器未绘制时,在该时间间隔内交换双缓冲区。这是从CRT显示器时代继承下来的一个术语,当时使用电子束从左上角到底部逐行绘制图像。当光束到达右下角时,它必须返回到右上角。电子束是由两对电磁铁线圈控制的,(与示波器中的静电偏转器不同)不能超过一定的转换速率。那是V-Sync
今天,显示器仍然将其数据逐行接收到显示器内部的缓冲区中。在整个帧的末尾插入一个小停顿。
因此,“垂直回溯”是指您可以在不干扰绘制过程的情况下更新显示帧缓冲区中的数据的时间间隔。
到目前为止,我一直在使用
。
不,你没有“使用”vsync。您确实使用了双缓冲,该交换由V-Sync同步。
,但我想用翻页缓冲区交换来代替它
这不是你该做的决定。所使用的方法由图形硬件及其驱动程序选择。你的程序生活在用户空间中,甚至不能与硬件进行低层次的对话。通常使用在这种情况下表现最好的方法。
https://stackoverflow.com/questions/14291083
复制相似问题