为什么调用 Canvas3D.repaint() 时 Java3D canvas 会闪烁

Why does the Java3D canvas flicker when I call Canvas3D.repaint()

我在 Java3D canvas 上使用 postRender() 绘制了 2D 元素,并希望为这些元素设置动画。在循环中我调用 Canvas3D.repaint():

while(animationIsRunning){
    // I update positions of 2D elements here...
    // ...
    canvas3D.repaint();
    Thread.sleep((long)(1.0/30.0 * 1000));
}

对于每个短动画,这会导致整个 3D canvas 闪烁一次或两次。

我想我找到了解决方案:

而不是

canvas3d.repaint();

我调用

canvas3d.getView().repaint();

这样我就可以在不闪烁的情况下以高帧率更新我的动画。