2015-08-04 4 views
1

Я создаю простой способ рендеринга игры. У меня есть статические изображения, такие как фон карты, который вообще не меняется. Я просто использую 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... 
} 

Это не в состоянии поддерживать дро и ждать способ ... becouse фон перерисовывается каждый 1/30 секунды, так что если вы этого не сделаете есть что рисовать, вы получаете черное полотно без ничего на нем .. поэтому вы должны всегда перерисовывать все каждое обновление ... Если я не рисую фон, буфер начинает мигать, как ад ..., так что я должен иметь что-то, чтобы покрыть это.

Я искал в интернете и ничего не нашел много о других решениях для этого типа рендеринга .. Tuns всячины для активного рендеринга, но ничего для этого Нарисовать и ждать методы ..

Я думаю, что это невозможно сделать с помощью BufferStrategy , Есть ли что-то еще для этого? Также есть другой источник для Graphics g? В Интернете было что-то о том, чтобы называть его directyl из Canvas, но я не запустил его для этого. Или я думаю об этом с неправильного угла?

ответ

2

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

Эти два варианта могут быть объединены, чтобы вы только нарисовали, какие изменения, и только когда они меняются. Это идеальный случай.

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

Смежные вопросы