이전 글에 프레임버퍼를 화면 크기의 두 배로 메모리 맵핑하는 방법에 대해 알아 보았습니다.

이번 글에서는 듀얼 버퍼를 어떻게 사용하는 지 알아 보겠습니다.

프레이 버퍼를 두 배 메모리로 할당해서 사용하는 이유는 화면이 완성해 가는

지저분한(?) 모습을 보여 주지 않기 위함이 가장 많을 것입니다.

즉, 한 쪽 버퍼는 현재 모습을 보여 주면서 두 번째 버퍼에는 다음에 출력할 화면을 그리고

그림이 완성되면 두 번째 버퍼를 화면에 출력합니다.

그리고 첫 번째 버퍼에 다음 출력 화면을 그리고 첫 번째 버퍼를 화면에 출력합니다.

이렇게 함으로써 미 완성 화면과 완성 화면의 차이에 의한 버버 거리는 문제를 해결할 수 있지요.


아래 소스 코드 중에 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;
}