【发布时间】:2013-04-12 21:57:30
【问题描述】:
基于对 OpenGL 编程的基本了解,所有必需的绘图操作都按顺序执行,每帧重绘一次。硬件的性能基本上决定了这种情况发生的速度。据我了解,游戏将尝试尽快绘制,因此重绘操作基本上包含在一个 while 循环中。然后将优化图形操作(图形引擎)以确保应用程序可以接受帧速率。
支持垂直同步的图形硬件将帧速率锁定到显示速率。第一个问题是图形引擎应该如何与硬件同步进行交互?这是否可能,或者渲染器是否以最大速度工作并且硬件有选择地调用最新帧,丢弃所有未使用的先前帧..?
提出这个问题的动机不是我打算立即编写图形引擎,而是调试现有系统的问题,其中移动场景的图形在屏幕上出现卡顿。症状上,当 VSync 关闭时,口吃很轻微,当它打开时,要么有明显的周期性口吃,要么完全解决了口吃。对于正在发生的事情或原因,我有些抓不住,想了解更多有关图形系统的背景信息。
总而言之,问题在于人们应该如何与硬件重绘事件进行交互,以及这是否可能。但是,欢迎提供任何其他信息。
【问题讨论】: