当前位置: 首页 > 面试题库 >

Java 2D绘图最佳性能

刘焱
2023-03-14
问题内容

我正在编写Java 2D游戏。我正在使用内置的Java
2D图形库,在我从BufferStrategy中从JFrame(有时是全屏)的Canvas中从BufferStrategy获取的Graphics2D上进行绘图。BufferStrategy是双缓冲的。重涂是通过计时器主动完成的。我遇到了一些性能问题,尤其是在Linux上。

Java2D有很多创建图形缓冲区和绘制图形的方式,我只是不知道自己是否做对了。我一直在尝试使用graphics2d.getDeviceConfiguration()。createCompatibleVolatileImage,这看起来很有希望,但是我没有确凿的证据表明,如果将绘图代码切换到该代码,它将更快。

以您的经验,用Java
1.5+在屏幕上渲染2D图形的最快方法是什么?请注意,游戏遥遥领先,所以我不想切换到完全不同的绘制方法,例如OpenGL或游戏引擎。我基本上想知道如何获得使用Graphics2D对象在屏幕上绘制内容的最快方法。


问题答案:

我遇到的问题与您的想法相同。在这里查看我的帖子:

Java2D性能问题

它显示了性能下降的原因以及解决方法。尽管不能保证它在所有平台上都能正常工作。您会在帖子中看到原因。



 类似资料:
  • 问题内容: 我在Java2D方面表现有些古怪。我知道sun.java2d.opengl VM参数可以为2D启用3D加速,但是即使使用该参数也有一些奇怪的问题。 这是我运行的测试结果: 在JComponent上绘制具有32x32像素图块的25x18地图, 图像1 = .bmp格式,图像2 = .png格式 没有-Dsun.java2d.opengl = true 使用.BMP图像1的120 FPS使

  • 我的问题是,我需要制作一个不断更新的GUI,因为我得到的值可以从数据库中更改,并且我在图形区域中遇到了一些问题。 我使用Graphics2D中的Drawline和Drawstring打印数据库中的值,这些字符串和线条移动并更改值,所以我需要调用repaint();使用计时器使它们出现在jpanel中,问题是repaint();不是在绘制之前移除背景中的旧绘画,而是当我完全调整所有更新的大小时。 我

  • 扩展是浏览器的补充,旨在提供补充和自定义功能。 延缓或损害浏览体验的扩展程序对用户来说是有问题的,并且违背了Chrome 扩展程序的目标。除了一般的良好编码习惯外,开发人员还应遵循这些做法,以确保其扩展以最佳性能运行。 尽可能延迟 直到需要它们再加载资源。 在启动功能中仅包括打开扩展所需的功能。在启动过程中,请勿加载仅在用户点击按钮时才需要的东西,或仅在用户登录后才起作用的功能。 管理重要事件 高

  • Overview This article discusses performance and reliability best practices for Express applications deployed to production. This topic clearly falls into the “devops” world, spanning both traditional

  • 问题内容: 我写了两种方法检查那里的表现 并在编译后检查它的字节码 在这里,两个操作码用于实现if条件:在第一种情况下,它使用ifnull-检查栈顶值是否为null-;在第二种情况下,它使用if_acmpeq- 检查栈顶值是否相等- 那么,这会对性能产生影响吗?(这将帮助我证明null的第一个实现在性能方面以及可读性方面都不错:)) 问题答案: 比较生成的字节码几乎没有意义,因为大多数优化是在运行

  • 性能与体验是前端的核心竞争力,是最直观反应页面是否好用、易用的标准。用户花在页面上的时间不应该是在等待页面加载和响应,而是使用和顺畅浏览的时间,因此如何提升页面性能和体验,让页面更快的可交互、浏览滚动更顺畅,是需要你持续的研究、优化、推进的。在 Rax 不断应用发展以及成熟的过程中,沉淀总结了一系列的性能体验的措施和最佳实践,通过这些,可以帮助你大幅提高页面的各项性能。 加载性能 统计口径 加载性