小编Con*_*sty的帖子

Java2D性能问题

我在使用Java2D时遇到了奇怪的现象.我知道sun.java2d.opengl VM参数可以为2D启用3D加速,但即使使用它也有一些奇怪的问题.

以下是我运行的测试结果:

在JComponent
Image 1 = .bmp格式上绘制具有32x32像素图块的25x18地图,图像2 = A .png格式

没有-Dsun.java2d.opengl = true

120 FPS使用.BMP图像1
13 FPS使用.PNG图像2

使用-Dsun.java2d.opengl = true

12 FPS使用.BN图像1
700 FPS使用.PNG图像2

如果没有加速,我假设每次使用drawImage()我都会在软件中进行某种转换,并且在.PNG的情况下大大降低了FPS.但是,为什么加速时,结果会切换(而PNG实际上表现得更快)?!疯狂!

.BMP图像1被转换为TYPE_INT_RGB的图像类型..PNG图像2被转换为TYPE_CUSTOM的图像类型.为了在有和没有opengl加速的情况下获得一致的速度,我必须创建一个图像类型为TYPE_INT_ARGB的新BufferedImage,并将Image 1或Image 2绘制到这个新图像.

以下是运行的结果:

没有-Dsun.java2d.opengl = true

120 FPS使用.BMP图像1
120 FPS使用.PNG图像2

使用-Dsun.java2d.opengl = true

700 FPS使用.BN图像1
700 FPS使用.PNG图像2

我真正的问题是,我可以假设TYPE_INT_ARGB将是所有系统和平台的本机图像类型吗?我假设这个值可能不同.有没有办法让我获得原生值,以便我总能创建新的BufferedImages以获得最佳性能?

提前致谢...

java java-2d

50
推荐指数
2
解决办法
2万
查看次数

Java2D神器?

我正在使用Java2D进行我正在编写的游戏,并且在我开始将其与其他swing组件集成之前没有遇到任何问题.我的问题是当我添加到JFrame的第一个组件不是我正在绘制的画布时,当我将鼠标悬停在文本窗格的滚动条上时,我会看到一个奇怪的神器.每次执行应用程序时都会发生这种情况.当我第一次使用画布时,没有问题.

出于某种原因,这似乎只发生在Windows上,当使用默认的Java2D管道时(恰好是sun.java2d.d3d = true),并且会发生工件.当我设置sun.java2d.opengl = true或sun.java2d.noddraw = false AND sun.java2d.d3d = false时,它不会发生.

我猜这是Direct3D Java2D管道的某种错误?我可以轻松地解决它,但很想知道是否有其他人遇到过这样的问题?我正在运行最新的JDK7u7,但它也适用于以前的版本.我应该注意,如果我最小化窗口并恢复它,那么工件就会消失,并且在我重新启动应用程序之前永远不会返回.

有神器: 坏

没有工件(首先添加画布而不是JLabel图像): 好

如果有人对此有任何进一步的信息,我会很感激.谢谢!

java swing java-2d

3
推荐指数
1
解决办法
506
查看次数

标签 统计

java ×2

java-2d ×2

swing ×1