2015-03-13 46 views
1

我在Java3D画布上使用postRender()绘制了2D元素,并且想要为这些元素设置动画。在一个循环我叫Canvas3D.repaint():当我调用Canvas3D.repaint()时,为什么Java3D画布会闪烁()

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

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

+1

您是否启用双缓冲? – Obicere 2015-03-13 18:27:17

+0

是的,它启用,没有帮助。 – Codev 2015-03-15 21:44:23

+0

该文档说使用'postRender()'是不能完成的。这可能是问题。 – Obicere 2015-03-15 22:01:57

回答

2

我想我找到了我的情况的解决方案:

而不是

canvas3d.repaint(); 

我调用

canvas3d.getView().repaint(); 

这样我可以更新我的高帧率动画无闪烁。