|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Object java.awt.image.BufferStrategy
public abstract class BufferStrategy
BufferStrategy
클래스는, 특정의 Canvas
또는 Window
상의 복잡한 메모리를 편성하는 메카니즘을 나타냅니다. 특정의 버퍼 스트래터지가 구현 가능한가 어떤가 및 그 구현 방법은, 하드웨어와 소프트웨어의 제한 사항에 의해 정해집니다. 이러한 제한 사항은,Canvas
또는 Window
를 작성할 경우에 사용하는 GraphicsConfiguration
의 기능을 개입시켜 검출됩니다.
「버퍼」 및 「표면」이라고 하는 말은 동의이며, 비디오 디바이스 메모리내 또는 시스템 메모리내에서의 연속한 메모리 영역을 가리킵니다.
복잡한 버퍼 스트래터지에는, 차례차례 링 버퍼링, Blit 버퍼링 등 몇개의 종류가 있습니다. 무엇보다 일반적인 것은, 차례차례 링 버퍼링 (더블 버퍼링 또는 트리플 버퍼링)입니다. 어플리케이션은 단일의 「백 버퍼」에 draw 하고 나서, 데이터를 복제할까 비디오 포인터를 이동하는 것으로써 단일 스텝에서 내용을 프런트 (디스플레이)에 이동합니다. 비디오 포인터를 이동하는 것으로 버퍼가 교환되어 최초로 draw 된 버퍼 또는 디바이스에 현재 표시되고 있는 이미지가 「프런트 버퍼」가 됩니다. 이것은 「페이지후립핑」이라고 불립니다.
대신에, 비디오 포인터를 이동하는 것이 아니라, 체인내에서 선행해 백 버퍼의 내용을 복제 또는 「Blit」할 수가 있습니다.
Double buffering: *********** *********** * * ------> * * [To display] <---- * Front B * Show * Back B. * <---- Rendering * * <------ * * *********** *********** Triple buffering: [To *********** *********** *********** display] * * --------+---------+------> * * <---- * Front B * Show * Mid. B. * * Back B. * <---- Rendering * * <------ * * <----- * * *********** *********** ***********
버퍼 스트래터지의 작성과 사용의 예를 나타냅니다.
// Check the capabilities of the GraphicsConfiguration
...
// Create our component
Window w = new Window(gc);
// Show our window
w.setVisible(true);
// Create a general double-buffering strategy
w.createBufferStrategy(2);
BufferStrategy strategy = w.getBufferStrategy();
// Main loop
while (! done) {
// Prepare for rendering the next frame
// ...
// Render single frame
do {
// The following loop ensures that the contents of the drawing buffer
// are consistent in case the underlying surface was recreated
do {
// Get a new graphics context every time through the loop
// to make sure the strategy is validated
Graphics graphics = strategy.getDrawGraphics();
// Render to graphics
// ...
// Dispose the graphics
graphics.dispose();
// Repeat the rendering if the drawing buffer contents
// were restored
} while (strategy.contentsRestored());
// Display the buffer
strategy.show();
// Repeat the rendering if the drawing buffer was lost
} while (strategy.contentsLost());
}
// Dispose the window
w.setVisible(false);
w.dispose();
Component
,
GraphicsConfiguration
,
VolatileImage
생성자 의 개요 | |
---|---|
BufferStrategy ()
|
메소드의 개요 | |
---|---|
abstract boolean |
contentsLost ()
getDrawGraphics 에의 마지막 호출을 위해서(때문에) draw 버퍼가 소실했는지의 여부를 돌려줍니다. |
abstract boolean |
contentsRestored ()
draw 버퍼가 소실 상태로부터 최근 복원되어 디폴트의 백그라운드 칼라 (흰색)에 재초기화되었는지의 여부를 돌려줍니다. |
void |
dispose ()
이 BufferStrategy 가 현재 사용하고 있는 system resource를 해제해, 관련하는 Component 로부터 삭제합니다. |
abstract BufferCapabilities |
getCapabilities ()
이 BufferStrategy 의 BufferCapabilities 를 돌려줍니다. |
abstract Graphics |
getDrawGraphics ()
draw 버퍼의 그래픽스 문맥을 작성합니다. |
abstract void |
show ()
메모리를 복제 (Blit)할까 디스플레이 포인터를 변경하는 (바꾼다) 것에 따라, 다음에 사용 가능한 버퍼를 가시 상태로 합니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
생성자 의 상세 |
---|
public BufferStrategy()
메소드의 상세 |
---|
public abstract BufferCapabilities getCapabilities()
BufferStrategy
의 BufferCapabilities
를 돌려줍니다.
public abstract Graphics getDrawGraphics()
public abstract boolean contentsLost()
getDrawGraphics
에의 마지막 호출을 위해서(때문에) draw 버퍼가 소실했는지의 여부를 돌려줍니다. 버퍼 스트래터지내의 버퍼는 일반적으로,VolatileImage
형이기 (위해)때문에 소실하는 일이 있습니다. 소실 버퍼에 대해서는,VolatileImage
를 참조해 주세요.
- 반환값:
getDrawGraphics
에의 마지막 호출을 위해서(때문에)
draw 버퍼가 소실했는지 어떠했는지- 관련 항목:
VolatileImage
public abstract boolean contentsRestored()
VolatileImage
형이기 (위해)때문에 소실하는 일이 있습니다. getDrawGraphics
에의 마지막 호출을 위해서(때문에) 소실 상태에 있던 표면이 최근 복원되었을 경우는, 재페인트가 필요한 일도 있습니다. 소실 버퍼에 대해서는,VolatileImage
를 참조해 주세요.
getDrawGraphics
에의 마지막 호출을 위해서(때문에)
draw 버퍼가 복원되었는지 어떠했는지VolatileImage
public abstract void show()
public void dispose()
BufferStrategy
가 현재 사용하고 있는 system resource를 해제해, 관련하는 Component 로부터 삭제합니다. 이 메소드를 호출한 뒤,getBufferStrategy
는 null 를 돌려줍니다. BufferStrategy
를 파기한 후에 재차 사용하려고 하면(자), 정의되어 있지 않은 동작이 발생합니다.
Component.createBufferStrategy(int)
,
Component.getBufferStrategy()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.