【问题标题】:How to programatically disable 3D acceleration on a java application?如何以编程方式禁用 Java 应用程序的 3D 加速?
【发布时间】:2021-06-05 05:17:23
【问题描述】:

随着 Java 8 的最新更新,我使用 Java swing 和 awt 制作的 MineSweeper 游戏现在在视觉上出现了极大的滞后。 (当我击中一个地雷时,现在我可以看到每个地雷一个接一个地出现,以前它们似乎同时出现。) 我只是将游戏放在一个 jar 文件中。如果我使用bat文件打开游戏,我可以设置: -Dsun.java2d.accthreshold=0 -Dsun.java2d.d3d=false -Dsun.java2d.ddoffscreen=false -Dsun.java2d.noddraw=true (-Dsun.java2d.d3d=false 是主要的。不确定是否其他是需要的,甚至有所作为......) 这加快了游戏的运行速度,但现在后台有命令提示符,并且找不到存储分数的文件夹。 如果我使用 jar 文件的 Windows 快捷方式,我不知道如何设置这些属性,但它在后台没有命令提示符的情况下运行,并且可以找到分数文件夹。

我希望做的是在 java 类中添加 System.setProperty() 调用以使其工作,但无济于事:

System.setProperty("sun.java2d.d3d", "false");
System.setProperty("sun.java2d.ddoffscreen", "false");
System.setProperty("sun.java2d.noddraw", "true");

这似乎设置了属性,但没有产生 bat 文件所做的任何结果。

编辑:奇怪的是,调用 System.setProperty("sun.java2d.accthreshold", "0");在 Main 中,其余的都打印:New Default Acceleration Threshold: 0 to the console。

我怎样才能设置它们以便这个游戏可以在任何机器上正确运行?

【问题讨论】:

  • 你有没有试过把那三行放在main方法的开头?
  • 是的。那就是他们所在的地方。我什至可以对它们都使用 System.getProperty(),这表明它们已被设置,但视觉效果仍然很慢。

标签: java swing awt


【解决方案1】:

我找到了答案here.

我做错了什么(抱歉没有在我的问题中指定),是我没有主要方法。我将游戏对象的构造函数作为主要方法,这就是我尝试设置属性并创建显示组件并渲染它们的地方。 通过创建一个标准的 main 方法并在其中设置属性,然后调用游戏对象的构造函数,我能够让它再次快速运行。

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2019-10-28
    • 2016-02-19
    相关资源
    最近更新 更多