리눅스에서는 화면 크기보다 두 배 정도 큰 크기로 프레임 버퍼를 열어서 사용할 수 있습니다.

모든 시스템에서 이렇게 사용할 수 있는 것은 아니지만, 아마도 대부분의 시스템에서

더블 버퍼로 접근할 수 있는 것으로 알고 있습니다.

그렇다면 어떻게 프레임 버퍼를 더블 크기로 열 수 있을까요?

방법은 간단합니다. 아래와 같이 프레임 버퍼의 파일 디스크립터에 버퍼 크기를 늘려주면 됩니다.

#define  TWO_FRAME_BUFFER 2

fbvar.yres_virtual  = fbvar.yres * TWO_FRAME_BUFFER;
ioctl(gx_fb.fd, FBIOPUT_VSCREENINFO, &fbvar);

아래는 프레임 버퍼를 듀얼 버퍼로 여는 전체 소스입니다.

struct   fb_var_screeninfo  fbvar;                                  // 화면 정보를 구하기 위해
    struct   fb_fix_screeninfo  fbfix;

    fd_gx = open( "/dev/fb", O_RDWR));
    ioctl( fd_gx, FBIOGET_VSCREENINFO, &fbvar);
    ioctl( fd_gx, FBIOGET_FSCREENINFO, &fbfix);

    fbvar.yres_virtual  = fbvar.yres * TWO_FRAME_BUFFER;
    ioctl(fd_gx, FBIOPUT_VSCREENINFO, &fbvar);

프레임 버퍼를 두 배로 잡으면 출력하지 않는 쪽에 그림을 완성한 후 화면을 전환하는 방식으로 그래프를 떨림 없이 출력할 수 있습니다. 프레임 버퍼를 이용하실 때 참고하세요.