“红皮书”中的一个问题

时间:2011-02-26 18:23:40

标签: opengl

代码是:

open_window();
for(i=0;i<100000;i++){
    clear_the_window();
    draw_frame(i);
    wait_until_a_24th_of_a_second_is_over();
}

这本书说这个代码的问题是:假设绘图花了将近1/24秒。绘制第一个的项目在整个1/24秒内可见,并在屏幕上显示实心图像;当程序在下一帧开始时,立即清除朝向末尾的项目。

我不太明白“第一”和“走到尽头”是什么意思?如果循环中的三个函数被顺序调用,那么问题是什么?除非它不是顺序程序?

1 个答案:

答案 0 :(得分:2)

说这个10 stps的范围涵盖了1/24秒:

  1. 清除窗口
  2. 项目A开始绘图......
  3. A完全可见并且几乎可以看到1/24秒
  4. 项目B开始绘图......
  5. ...
  6. ...昂贵的B画...
  7. B完成绘图 - &gt;不会显示太久
  8. 项目C开始绘图......
  9. ...
  10. 完成绘图C - &gt;将在下一次迭代时持续很短的时间 内在
  11. ------- NEXT迭代-------

    1. 清除窗口