被动渲染方法

时间:2015-08-04 18:28:38

标签: java graphics bufferstrategy

我正在构建一个简单的游戏渲染方法。我有一个静态图像,如地图背景,根本没有变化。我只是使用整个屏幕的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重绘一次所以如果你没有任何东西可以绘制,你会得到黑色的画布上没有任何内容..所以你必须总是重新绘制每个更新的所有内容...如果我不绘制背景,缓冲区开始像地狱一样闪烁...所以我必须有一些东西来掩盖这些东西。

我在互联网上搜索并没有发现任何关于此渲染类型的其他解决方案。用于活动渲染的东西,但没有用于绘制和等待方法..

我认为用BufferStrategy做到这一点是不可能的。还有别的东西可以为此服务吗?图形g还有其他来源吗?在互联网上有一些关于从Canvas中调用它的方法,但我没有让它为此运行。或者我是从错误的角度思考它?

1 个答案:

答案 0 :(得分:2)

您将被动渲染与部分更新混为一谈。在"被动渲染"你可以重绘一切,但你不能30fps。你只有在事情发生时才这样做。在"部分渲染"中,您只绘制更改的画布部分。

这两者可以放在一起,这样你只能画出什么样的变化,而且只有当它发生变化时。这是理想的情况。

但是,如果某些内容始终在移动,则被动呈现不起作用,如果整个背景不断更新,则部分更新不起作用。