그래픽 & 멀티미디어
글 수 111
2015.05.25 15:28:36 (*.235.185.151)
17927
리눅스에서는 화면 크기보다 두 배 정도 큰 크기로 프레임 버퍼를 열어서 사용할 수 있습니다.
모든 시스템에서 이렇게 사용할 수 있는 것은 아니지만, 아마도 대부분의 시스템에서
더블 버퍼로 접근할 수 있는 것으로 알고 있습니다.
그렇다면 어떻게 프레임 버퍼를 더블 크기로 열 수 있을까요?
방법은 간단합니다. 아래와 같이 프레임 버퍼의 파일 디스크립터에 버퍼 크기를 늘려주면 됩니다.
#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);
프레임 버퍼를 두 배로 잡으면 출력하지 않는 쪽에 그림을 완성한 후 화면을 전환하는 방식으로 그래프를 떨림 없이 출력할 수 있습니다. 프레임 버퍼를 이용하실 때 참고하세요.