Java 3d显示窗口"闪烁"

时间:2016-10-03 17:25:27

标签: java 3d java-3d

我最近开始探索java的3d图形领域,经过几个小时的搜索3d API,我得出的结论是我认为适合我的Java,Java 3d。在阅读完第一个教程之后,我想我会复制代码并试一试,

import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.ColorCube;
import javax.media.j3d.BranchGroup;

public class Hello3d 
{
    public Hello3d()
    {
       SimpleUniverse universe = new SimpleUniverse();
       BranchGroup group = new BranchGroup();
       group.addChild(new ColorCube(0.3));
       universe.getViewingPlatform().setNominalViewingTransform();
       universe.addBranchGraph(group);
    }

    public static void main(String[] args ) {
       new Hello3d();  
    }
}

该程序非常简单,它只是输出一个面向相机的红色立方体,使其呈现红色正方形。

我把它放到以下文件结构中:

java3d/
├── ext/
│   ├── jd3core.jar
│   ├── jd3utils.jar
│   └── vecmath.jar
│ 
└── Hello3d.java

然后我在命令行上编译,如此

javac -cp "ext/*"; Hello3d.java

并以同样的方式运行

java -cp "ext/*"; Hello3d

这是我遇到问题的地方。显示屏有时是预期的输出,有时只是完全空白。 screen caps of the window in both states

调整窗口大小时,显示屏将在正确的输出和空白屏幕之间剧烈闪烁。有没有办法解决这样一个事实:我的显示窗口有一半时间不会起作用?

其他可能有用的信息:

我正在运行Windows 10 使用Java 3d 1.5.1(Atemped使用1.5.2和实验1.6.0,同样的问题)
我正在使用Java 7

我认为This question可能与我的问题有关,但我真的不明白我能做些什么来修复它。

1 个答案:

答案 0 :(得分:1)

经过进一步研究后,我找到了答案here

您需要做的就是将System.setProperty("sun.awt.noerasebackground", "true");作为main中的第一行,希望这可以帮助解决此问题的任何人。