我正在构建一个简单的游戏渲染方法。我有一个像地图背景这样的静态图像,根本没有改变。我只是使用整个屏幕的 30% 来更改图形。而且我觉得没有必要一遍又一遍地渲染所有这些东西,如果它没有改变的话..
在互联网上我发现了一些关于被动渲染的东西 - 你画你需要的东西并等待......直到有东西更新......之后你更新它并再次等待。看起来这种情况的好方法。但是现在......我有一个这样的渲染方法:
public class X extends Canvas{
//some method
this.createBufferStrategy(3);
//....
public void render(){
BufferStrategy buffer = this.getBufferStrategy();
Graphics g = buffer.getDrawGraphics();
//Draws black background...
g.setColor(Color.BLACK);
g.fillRect(....
for(... //cycles every object and calls their render methods...
}
这无法维持绘制和等待方法......因为背景每 1/30 秒重绘一次,所以如果你没有任何东西要绘制,你会得到黑色画布,上面什么都没有......所以你必须总是重绘每次更新的所有内容......如果我不绘制背景,缓冲区开始像地狱一样闪烁......所以我必须有一些东西来掩盖那些东西。
我在互联网上搜索并没有发现关于这种渲染类型的其他解决方案的任何内容。主动渲染的东西很多,但对于 Draw and wait 方法却一无所获。
我认为使用 BufferStrategy 是不可能做到这一点的。还有什么可以为此服务的吗?Graphics g 还有其他来源吗?在互联网上,有人将它从 Canvas 中称为 directyl,但我并没有为此运行它。还是我从错误的角度考虑它?