为什么处理跳帧

问题描述 投票:0回答:1

这是一个简单的处理程序,它所做的就是在最后四帧中绘制四个圆圈(我的图形卡的刷新率是60Hz,所以它每秒绘制一次)

但有时由于某种原因,它是跳帧,所以我没有看到所有四个圆圈。为什么这样做,我该怎么做才能使它不跳帧。

int counter = 1;

void setup(){
  fullScreen();
  background(0);
  fill(255);
}

void draw(){
  background(0);
  if(counter == 57){
    ellipse(383,383,100,100);
  }
  else if(counter == 58){
    ellipse(583,383,100,100);
  }
  else if(counter == 59){
    ellipse(783,383,100,100);
  }
  else if(counter == 60){
    ellipse(983,383,100,100);
    counter = 0;
  }
  counter++;
}
processing graphics2d frame-rate
1个回答
0
投票

想想每次调用draw()函数时会发生什么:

  • 首先,你打电话给background(0)清除旧框架。
  • 然后你检查它是哪一帧,并可能画一个圆圈。

第61帧会发生什么?你将清除旧框架(清除你画出的圆圈),然后不画任何东西。因此,每个圆圈显示1/60秒,这可能是您无法看到的。

要解决您的问题,您需要考虑每帧的内容。考虑摆脱对background()的调用,以便不清除旧帧,或者每帧可能重绘旧圈。这取决于你想要草图的确切内容。

附注:您不需要创建自己的counter变量。 Processing提供了一个frameCount变量来完成这个。更多信息可以在the reference找到。

© www.soinside.com 2019 - 2024. All rights reserved.