【问题标题】:Why does the Java3D canvas flicker when I call Canvas3D.repaint()为什么调用 Canvas3D.repaint() 时 Java3D 画布会闪烁
【发布时间】:2015-03-13 17:19:16
【问题描述】:

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

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

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

【问题讨论】:

  • 你启用双缓冲了吗?
  • 是的,它已启用,没有帮助。
  • 文档说不能使用postRender()。这可能是这里的问题。
  • 从这里的一些经验中得到一个大胆的猜测:尝试将System.setProperty("sun.awt.noerasebackground", "true "); 添加为您的main 方法的第一行。

标签: java java-3d


【解决方案1】:

我想我找到了解决方案:

代替

canvas3d.repaint();

我调用

canvas3d.getView().repaint();

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

【讨论】:

    猜你喜欢
    • 2022-12-10
    • 1970-01-01
    • 2013-05-26
    • 2020-09-19
    • 1970-01-01
    相关资源
    最近更新 更多