그래픽 & 멀티미디어
글 수 111
2015.05.31 16:20:01 (*.134.169.166)
15669
이전 글에 프레임버퍼를 화면 크기의 두 배로 메모리 맵핑하는 방법에 대해 알아 보았습니다.
이번 글에서는 듀얼 버퍼를 어떻게 사용하는 지 알아 보겠습니다.
프레이 버퍼를 두 배 메모리로 할당해서 사용하는 이유는 화면이 완성해 가는
지저분한(?) 모습을 보여 주지 않기 위함이 가장 많을 것입니다.
즉, 한 쪽 버퍼는 현재 모습을 보여 주면서 두 번째 버퍼에는 다음에 출력할 화면을 그리고
그림이 완성되면 두 번째 버퍼를 화면에 출력합니다.
그리고 첫 번째 버퍼에 다음 출력 화면을 그리고 첫 번째 버퍼를 화면에 출력합니다.
이렇게 함으로써 미 완성 화면과 완성 화면의 차이에 의한 버버 거리는 문제를 해결할 수 있지요.
아래 소스 코드 중에 variable_info.xoffset과 variable_info.yoffset 값을 이용하면
화면 출력의 시작 위치를 벼경할 수 있습니다.
예제 코드는 프레임버퍼의 출력 위치를 시작 위치로 조정합니다.
struct fb_var_screeninfo variable_info; if ( ioctl ( gx_fb.fd, FBIOGET_VSCREENINFO, &variable_info)){ printf( "fail:FBIOGET_VSCREENINFO\n"); return 1; } printf( "xoffset= %d\n", variable_info.xoffset); printf( "yoffset= %d\n", variable_info.yoffset); variable_info.xoffset = 0; variable_info.yoffset = 0; if ( ioctl ( gx_fb.fd, FBIOPAN_DISPLAY, &variable_info) ){ printf( "failure: FBIOPAN_DISPLAY"); return 1; }