【发布时间】:2013-10-29 11:15:49
【问题描述】:
我正在开发一个简单的 2D 游戏,通过 Java2D API 进行渲染。我注意到,当我尝试在集成显卡上绘图时,性能会崩溃。
我已经在我的主设备上使用较新的 ATI Radeon 和我的 5 年前的笔记本电脑测试了这款游戏,该笔记本电脑也有一个(令人难以置信的过时的)Radeon。在这两种情况下,我的 FPS 都不错,但是当我尝试使用 Intel i5 的板载 HD 4000 显卡时,它会以 20 FPS 左右的速度爬行。
我正在使用全屏独占模式。
在任何特定时刻,我都会一次渲染大约 1000 张图像。
令人讨厌的是,当我尝试 getAvailableAcceleratedMemory() 时,它只会为这张卡返回 -1,而且它似乎拒绝加速任何图像。
有没有人知道如何解决这个问题?
渲染代码:
Graphics g = bufferStrategy.getDrawGraphics();
g.drawImage(img, x, y, img.getWidth(), img.getHeight(), null)
g.dispose();
bufferStrategy.show();
图片加载代码:
BufferedImage I = null;
I = ImageIO.read(new File(currentFolder+imgPath));
imgMap.put(imgIdentifier, I);
图像存储在由字符串标识的 BufferedImages 的哈希图中,因此当实体需要绘制和图像时,它只需将其从哈希图中取出并进行绘制。在当前情况下,实体主要是地砖和墙砖,因此它们永远不会改变(因此除了第一次外,不必从哈希图中获取图像)。
编辑 - 我采用了 MadProgrammer 的方法,但它并没有改变我的 FPS。
【问题讨论】:
-
您可以尝试使用
GraphicsConfiguration#createCompatiableImage并绘制您已加载的图像。这将节省每次即时转换图像的时间...... -
我看过一些关于这个的帖子,我对它进行了一些修改,它只画了我的 3 张图像,其余时间什么也没画。我假设我做错了什么。您能否详细说明我提供的 sn-ps 中的下落?
-
我已经添加了我使用的代码。希望它有所帮助......我用它来制作多张图像的多层透明动画,它对我的 Mac 笔记本电脑产生了巨大的影响
-
谢谢!我只是试了一下(没有 g2d.drawimage 的东西),但它并没有真正帮助。它确实渲染正确,但并没有改变我的 FPS。编辑:在 g2d.drawImage 东西中添加,没有变化。
-
JRE 使用的是什么版本的操作系统?它们是相同的位深度(32 位还是 64 位)?可能是驱动不兼容
标签: java performance java-2d 2d-games