2011-12-02 3 views
1

전체 화면 응용 프로그램을 개발하려고하지만 이중 버퍼에 문제가 있습니다.Java 더블 버퍼링 - 다른 모든 프레임 만 그려 짐

public void create() 
{ 
    window = new JWindow(); 
    window.setIgnoreRepaint (true); 
    GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow (window); 
    window.setVisible (true); 
    window.createBufferStrategy (2); 
} 

public void renderCycle() 
{ 
    BufferStrategy strategy = window.getBufferStrategy(); 
    while (true) 
    { 
     render ((Graphics2D) strategy.getDrawGraphics()); 
     strategy.show(); 
    } 
} 

public void render (Graphics2D g) 
{ 
    g.setColor (Color.WHITE); 
    g.drawString ("Veikia", 100, 100); 
} 

무거운 깜박임 - 텍스트가 다른 모든 버퍼에만 그려지고 나머지 버퍼에는 흰색 배경이있는 것처럼 보입니다. 무엇이 문제 일 수 있습니까?

답변

1

방금 ​​시도했습니다. MultiBufferTest. lag 기간이 모니터의 해당 재생 빈도 아래로 떨어질 때까지 렌더링 아티팩트가 표시되지 않았습니다. 귀하의 예제는 프레임간에 지연이없는 것으로 보입니다.

... 
g.fillRect(0, 0, bounds.width, bounds.height); 
g.setColor(Color.black); // added 
g.drawString(String.valueOf(lag), 100, 100); // added 
bufferStrategy.show(); 
... 
:

나는 프레임 기간을 보여주기 위해 몇 줄을 추가