0

我在我的 opengl 应用程序中遇到了一些重复的滞后。我正在使用 win32 api 创建窗口,并且还在创建 2.2 上下文。所以程序的主循环很简单:

  • 清除颜色缓冲区
  • 画一个三角形
  • 交换缓冲区。

三角形正在旋转,这就是我可以看到滞后的方式。我的帧时间也不流畅,这可能是问题所在。但我非常确定增量时间计算是正确的,因为我尝试了很多方法。

您认为这可能是图形驱动程序的问题吗?因为我的一个朋友运行几乎完全相同的程序,除了我做的计算更少+我使用的是标准的 opengl 着色器。此外,他的程序比我的程序使用更多的 CPU 功率,并且 CPU 百分比比我的更平滑。

我还应该补充一点:在我的笔记本电脑上,我每隔约 1 秒就会有相同的延迟,所以我可以看到某种模式。

4

1 回答 1

1

抖动的帧速率有很多原因。在我的头顶上:

  • 在每一帧结束时不调用 glFlush()
  • 其他正在运行的软件干扰
  • 在代码中做某些图形驱动程序不喜欢的事情
  • 图形驱动程序中的错误
  • 使用具有可怕分辨率的标准 Windows 时间函数

试试这些:

  • 尽可能多地杀死正在运行的程序。CTRL为此,请使用任务管理器 ( - SHIFT- ESC)中的进程选项卡。
  • 一点一点地减少程序正在执行的工作量,看看它如何影响帧速率和显示的平滑度。
  • 如果可以,请尝试启用/禁用垂直同步(您可以在显卡设置中执行此操作),看看是否有帮助
  • 添加一些调试代码以输出绘制每一帧所花费的时间,并查看数字是否存在异常,例如每 20 帧需要额外的 20 毫秒,或者随机帧需要 100 毫秒。
于 2012-04-04T12:15:39.000 回答