gpt4 book ai didi

java - 实现双缓冲?

转载 作者:行者123 更新时间:2023-11-30 04:58:37 24 4
gpt4 key购买 nike

我正在制作一款游戏,我正在尝试找到在其中实现双缓冲的最佳方法。有人能告诉我如何使用下面的渲染代码来做到这一点吗?

public void paint(Graphics g){
super.paint(g);


Graphics2D g2d = (Graphics2D) g;


g2d.drawImage(p.getImage(), p.getX(),p.getY(),null);

//draw each ball object
for(int i=0;i<balls.size(); i++){
Ball tmp = (Ball) balls.get(i);
g2d.drawImage(tmp.getImage(), tmp.getX(),tmp.getY(),null);
}
//strings
g2d.drawString("Score: "+score,50,20);
}

有人可以帮忙吗?

最佳答案

如果您使用 Swing,则可以使用内置双缓冲:http://java.sun.com/products/jfc/tsc/articles/painting/#db

如果您正在实现自己的渲染,这里有一些提示:

双缓冲基本上意味着您有两个绘制缓冲区,您可以在显示另一个的同时交替写入。

在您的情况下,您可以使用图像来绘制游戏内容,然后将该图像绘制到组件。从某种意义上说,这应该给你双重缓冲。您可以使用交换的两个图像以减少并发访问,即一个是显示的“前”缓冲区,另一个是您绘制的“后”缓冲区。

也就是说,我强烈建议您不要自己实现。相反,您应该尝试使用现有的 2D 库(例如 Swing)或 3D 库之一(例如带有 JOGL 的 OpenGL 或 LWJGL 作为 Java 绑定(bind) - 请注意,它不必是带有 OpenGL 的 3D)。或者,您也可以寻找游戏引擎,那里有很多这样的引擎。

关于java - 实现双缓冲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7683856/

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