gpt4 book ai didi

java - 集成显卡上的 Java2D 绘图速度缓慢

转载 作者:行者123 更新时间:2023-12-02 06:37:27 24 4
gpt4 key购买 nike

我正在开发一个简单的 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 HashMap 中,因此当实体需要绘制和图像时,它只需从 HashMap 中取出并绘制它。在当前情况下,实体主要是地板和墙砖,因此它们永远不会改变(因此除了第一次之外不必从 HashMap 中获取图像)。

编辑 - 我已经合并了 MadProgrammer 的方法,但它没有改变我的 FPS。

最佳答案

这是将图像转换为兼容图像的示例...本身并不是答案

这是我使用的一些库代码...

public static BufferedImage createCompatibleImage(BufferedImage image) {
BufferedImage target = createCompatibleImage(image, image.getWidth(), image.getHeight());
Graphics2D g2d = target.createGraphics();
g2d.drawImage(image, 0, 0, null);
g2d.dispose();
return target;
}

public static BufferedImage createCompatibleImage(BufferedImage image,
int width, int height) {
return getGraphicsConfiguration().createCompatibleImage(width, height, image.getTransparency());
}

public static GraphicsConfiguration getGraphicsConfiguration() {
return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
}

我会做类似的事情

I = createCompatibleImage(ImageIO.read(new File(currentFolder+imgPath)));
imgMap.put(imgIdentifier, I);

关于java - 集成显卡上的 Java2D 绘图速度缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19486459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com