Java 实现双缓冲?
我正在做一个游戏,我正在试图找到最好的方法来实现双缓冲。有人能告诉我如何使用下面的渲染代码吗Java 实现双缓冲?,java,graphics,buffer,Java,Graphics,Buffer,我正在做一个游戏,我正在试图找到最好的方法来实现双缓冲。有人能告诉我如何使用下面的渲染代码吗 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<
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);
}
public void绘制(图形g){
超级油漆(g);
Graphics2D g2d=(Graphics2D)g;
g2d.drawImage(p.getImage(),p.getX(),p.getY(),null);
//绘制每个球对象
对于(int i=0;i如果使用Swing,则可以使用内置双缓冲:
如果您正在实现自己的渲染,以下是一些提示:
双缓冲基本上意味着您有两个绘图缓冲区,在显示另一个缓冲区时交替写入
在您的情况下,您可以使用一个图像将游戏内容绘制到组件,然后将该图像绘制到组件。从某种意义上说,这应该给您提供双重缓冲。您可以使用两个图像进行交换,以减少并发访问,即一个是显示的“前”缓冲区,另一个是绘制到的“后”缓冲区
也就是说,我强烈建议您不要自己实现它。相反,您应该尝试使用现有的2D库(如Swing)或3D库(如OpenGL和JOGL或LWJGL作为Java绑定-请注意,它不必是3D和OpenGL)。或者你也可以找一个游戏引擎,那里有很多。我想先给一个内置的方法,我把你给我的关于双缓冲的页面弄红了,但它没有告诉我从哪里开始使用JRootPane,你能给我一些帮助吗?@Duncan-从那个页面:默认情况下,这个属性设置为true所有Swing组件。
因此您不需要做任何事情。JRootPane
可以从JFrame
等访问。