Java图形性能

Mar*_*ler 6 java graphics

我正在编写一个简单的游戏,并希望通过Java Graphics + Swing API显示它.当然,感觉有点慢,所以我测量了重画需要多长时间,大约是32毫秒.然后我读到了加速Java图形并使用了这里描述的方法:Space Invaders

然而,不知何故,这甚至更慢.现在需要大约98毫秒才能重绘.这是为什么?

请注意,我知道像LWGL和JOGL这样的库,但我不想使用完整的OpenGL包装器来制作这样一个图形简单的游戏.

Cla*_*diu 6

对于一场比赛来说,挥杆会很慢.您最好的选择可能是SDL包装器,例如jsdlsdljava.SDL非常轻量级,并且在许多平台上都受支持.

好处是,良好实现的2d图形库包装器实现了Graphics接口,因此您应该能够尝试多个并在不修改代码的情况下查看哪个最适合您的应用.


Ivo*_*zel 6

  1. 阅读这个关于计时器
  2. 在后台使用始终处于休眠状态的线程来降低系统中断率以获得更精确的计时器!
  3. 您可以在这里查看我的代码
  4. 我可以在这里找到我创建的小游戏

    long renderStart = System.nanoTime()
    // render stuff here
    long renderTime = (System.nanoTime() - renderStart) / 1000000;
    
    Run Code Online (Sandbox Code Playgroud)


Poo*_*ool 6

提示性能的一些提示:

  1. 剪辑并绘制已更改的区域
  2. 绘图时不要缩放任何东西
  3. 使用正确的缓冲策略
  4. 如果适用,请使用全屏独占模式.

摆动本身并不慢.关于Swing的大多数混淆来自于那些不了解或不了解事件调度线程的人(是的,要做到这一点需要付出很多努力).

关于你的时间,你只是在时间设置之间调用g.drawImage吗?如果是这样,你重新粉刷的尺寸是多少,你是否正在对这个电话进行任何缩放?

编辑:忘了提及Pulp Core - 一个非常好的Java游戏框架.