在绘制到缓冲区之前或之后,最好使用glClear()?

时间:2019-06-15 03:52:18

标签: c++ opengl optimization

我目前有执行以下操作的代码:

  1. 睡到下一帧
  2. glClear(GL_COLOR_BUFFER_BIT | GL_DPETH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
  3. 执行框架的所有绘制
  4. 刷新并在屏幕上显示图形
  5. 睡觉直到下一帧(再次)

我的问题是:清除(2)是否应移动到步骤4之后?

此顺序很好,因为为概念上进行渲染准备的渲染缓冲区更容易,例如将底漆放在画布上,而不是事后清理渲染缓冲区。但是我担心GPU可能会卡在每个空隙上并立即延迟其后的绘制命令,这意味着应该在GPU无关的情况下使用它,例如在等待下一帧开始之前。

最佳情况:此顺序很好,我很偏执,glClear()不会以任何有意义的方式延迟其他opengl绘图命令。

最坏的情况:glClear()最好是在渲染帧之后调用,因为没有其他opengl命令排队,因此存在停工时间。

0 个答案:

没有答案