본문 바로가기
Language/C++ & openGL

openGL 더블 버퍼링

by javapp 자바앱 2020. 5. 2.
728x90

 

물체들을 프레임 버퍼에 그려내는 과정에서 미완성인 상태의 결과를 디스플레이 컨트롤러가 읽어서 화면에 그대로 출력하게 된다면 화면 상에는 그림이 이상하게 나타난다. 이를 해결하기 위한 방법이 프레임 버퍼를 2개 두고서 그리는 버퍼와 읽어가는 버퍼를 다르게 처리하고 두 버퍼를 교환(Swap)하는 방법을 적용하면 된다.

 

프론트 버퍼의 내용을 화면에 출력할 때 백 버퍼에 다음 그림을 그려주고 백 버퍼의 내용이 화면에 출력될 때는 프론트 버퍼에 그림을 그려주는 방식

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); 사용

 


 

 

#include <GL/glut.h>

#include <GL/gl.h>

#include <GL/glu.h>

#include <stdio.h>

#include <windows.h>

#include <math.h>

 

using namespace std;

 

 

void MyDisplay()

{

        glClear(GL_COLOR_BUFFER_BIT);

 

        glBegin(GL_POLYGON);

        glColor3f(1.0, 0.0, 0.0);

        glVertex3f(0.5, 0.5, 0.0);

        glVertex3f(-0.5, 0.5, 0.0);

        glVertex3f(-0.5, -0.5, 0.0);

        glVertex3f(0.5, -0.5, 0.0);

        glEnd();

 

        glutSwapBuffers();                         //필수

}

 

 

int main(int argc, char* argv[])

{

        glutInit_ATEXIT_HACK(&argc, argv);

        glutInitWindowSize(500, 500); // 윈도우 크기

        glutInitWindowPosition(500, 100); // (500,100) 위치에 윈도우

        glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);      

        glutCreateWindow_ATEXIT_HACK("OpenGL Example");



        glutDisplayFunc(MyDisplay);

        glutMainLoop();

        return 0;

}



 

 

참고 블로그

m.blog.naver.com/PostView.nhn?blogId=utez&logNo=90112416794&proxyReferer=https:%2F%2Fwww.google.com%2F

 

[OpenGL] 2D 그리기

지난번에 포스팅 했던 내용을 바탕으로 2D 그리기에 관해서 포스팅 할까 합니다. 예제 파일은 새롭게 올리...

blog.naver.com

 

댓글