在我们的互联网组装团队正在编程的游戏中,我们假设我们的观众中的每个人都将在游戏中全速前进。
因此,为了节省视频 RAM,并希望给显卡多一点空闲时间,使用没有双缓冲的垂直同步将是我们的最佳选择。因此,在 OpenGL 中,我们需要知道如何做到这一点。
根据我的理解,垂直同步是指显卡在完成渲染单个帧后暂停,直到该帧完成发送到显示设备。双缓冲不会暂停渲染操作(或者它可能会暂停,或者它可能是特定于实现的;不确定),因为它会在复制到帧缓冲区之前绘制到第二个缓冲区,以便监视器获得完整帧或没有完全新的帧(特别是帧缓冲区中最后存储的图像)。好吧,我们不需要这个功能,只要显卡只在它该死的需要时才写入帧缓冲区。
这是一个相当慢的网络游戏(但它很有创意^_^)。很少有实时动作。因此,非常精确的用户输入不是必需的;在渲染帧之前,它可以随时从操作系统作为一个单元被捕获。
因此,为了做到这一点,我需要能够从 OpenGL 获得“帧已完成发送到监视器”的消息。是否可以?如果没有,最好的选择是什么?
该游戏目前仅针对 Windows 进行编程,但应该在几个月内完成针对 Linux 的工作。