Processing 在圆内移动的文本的锯齿状运动(处理)
我有一个圆圈,里面有文字。圆圈在移动,文本也随之移动 圆圈移动平稳,但文字移动明显锯齿状/滞后,总体上不平稳 如何解决这个问题Processing 在圆内移动的文本的锯齿状运动(处理),processing,Processing,我有一个圆圈,里面有文字。圆圈在移动,文本也随之移动 圆圈移动平稳,但文字移动明显锯齿状/滞后,总体上不平稳 如何解决这个问题 ellipse(position.x, position.y, radius*2, radius*2); fill(255); textSize(radius/3); textAlign(CENTER); text(mytext, position.x, position.y); 这里的所有变量都属于圆,例如圆的位置、半径和圆内
ellipse(position.x, position.y, radius*2, radius*2);
fill(255);
textSize(radius/3);
textAlign(CENTER);
text(mytext, position.x, position.y);
这里的所有变量都属于圆,例如圆的位置、半径和圆内的文本
由于position.x,position.y
每次调用都会发生轻微变化,因此圆圈会四处移动,但文本移动会滞后
我试着增加FPS,但没有解决问题
当圆直线向上/向下或向左/向右移动时,它可以正常工作,但每当它沿对角线移动时,文本移动就会滞后。所以我认为这可能在某种程度上是相关的
编辑:例如,在本例中,圆圈内的文本为laggy:
void setup()
{
size(500, 500);
}
float x = 250, y = 250;
void draw()
{
background(255);
x += 0.1;
y += 0.1;
fill(120, 120, 120);
ellipse(x, y, 50, 50);
fill(0);
text("hello", x, y);
}
似乎处理两个数字的舍入方式不一样。您可以手动将数字四舍五入,这样就不会发生这种情况 以下是您可以更改的代码片段,以避免手动出现锯齿状移动。重要的部分是
floor()
,我自己将数字四舍五入,以避免让处理代表我决定:
void draw()
{
background(255);
x += 0.1;
y += 0.1;
fill(120, 120, 120);
ellipse(floor(x), floor(y), 50, 50);
fill(0);
text("hello", floor(x), floor(y));
}
玩得开心。由于某些原因,默认渲染器似乎不喜欢使用浮动作为位置,因此可以切换到其他渲染 当然,这会给你的机器多加一点税。这种策略是有代价的
size(500, 500, P3D);
您会注意到,移动明显更平滑,并且看起来略有不同。这是因为处理将使用图形卡来处理绘制草图所涉及的一些数学问题。从理论上讲,您的草图应该运行得更平滑、更快,但有些人在执行此操作时会看到CPU使用率上升,或者有时草图加载所需的时间稍长。不过,患有P3D问题的人应该是少数
希望这有帮助。我觉得这个问题很奇怪。我看不到代码中有什么明显的东西。你能给我一个(最低限度的)工作示例,我可以在我的机器上运行,看看你看到了什么吗?是的,我添加了代码。这并没有解决问题,因为现在圆的运动是锯齿状的,因为你每次都在舍入它的位置,这会妨碍平滑度。