Пассивный метод рендеринга

Я строю простой метод рендеринга игры. У меня есть статические изображения, такие как фон карты, которые вообще не меняются. Я просто использую около 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. Есть ли что-то еще, чтобы служить для этого? Также есть другой источник для Графика г? В Интернете было что-то о том, чтобы называть это directyl из Canvas, но я не запустил его для этого. Или я думаю об этом не с того угла?

1 ответ

Вы путаете пассивный рендеринг с частичными обновлениями. В "пассивном рендеринге" вы можете перерисовать все, но вы не делаете это 30fps. Вы делаете это только тогда, когда что-то движется. В "частичном рендеринге" вы рисуете только ту часть холста, которая изменилась.

Их можно сложить так, чтобы вы рисовали только то, что меняется, и только тогда, когда это меняется. Это идеальный случай.

Но пассивный рендеринг не работает, если что-то всегда движется, и частичные обновления не работают, если весь фон постоянно обновляется.

Другие вопросы по тегам