본문 바로가기

만들기 / Programming/그래픽,영상처리 OpenGL /OpenCV

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

◆ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

 

 이 함수를 설명하기 전에 인수로 들어간 버퍼들에 대해서 잠시 알아 보자.

 모니터는 2차원적이기 때문에 모니터에 우리가 사는 세계를 표현하기 위해서는 3차원 공간을

2차원으로 변환하는 과정이 필수이다.

 변환으로 구해진 2차원 픽셀은 COLOR_BUFFER에 저장이 된다. 그런데 지금 우리는 3차원

공간을 표현하는 것이기 때문에 이것만 가지고는 부족하다.

 예를 들어서 앞에는 삼각형, 뒤에는 사각형을 그리는 경우를 가정해 보자. 앞쪽에 있는 물체는

화면에 그대로 드러나 그려질 것이고, 뒤에 있는 물체는 앞 물체에 가려지져서 아예 안보이거

나 또는 일부분만 보여야 될 것이다. 이 때 COLOR_BUFFER만으로는 어떤 픽셀을 그려야하고

 그리지 말아야 할지 알 수 없기 때문에 DEPTH_BUFFER를 두어서 픽셀별로 깊이 값을 저장하도록 하였다. 이를 이용해서 어떤 물체를 그리고자 할때 그앞에 물체가 있으면 있을때 깊이를

비교하여 DEPTH가 작은 삼각형쪽은 그려지고, DEPTH가 큰 사각형쪽은 그리지 않게 할 수 있

게되는 것이다. (동일한 좌표의 픽셀이 있을때 깊이에 따라 그려야 할지 말아야 할지 선택하게

되는 것이다.)

 

 이상으로부터 glClear로 이 두 버퍼를 지우는 것이 3차원 공간에 그려졌던 그림들을 지우는 역할을 한다고 할 수 있겠다.