DC (Device Context) & RC (Rendering Context)

OpenGL이 OS상에서 구동되려면 OS에서 제공하는 window에 연결되어야 한다.
만약 동시에 두 개 이상의 OpenGL applications가 실행되고 있다면 이들 사이에는 상호간 영향이 있어서는 안된다. (A application에서 색상이나 선의 두께를 조절하였을 때, B application에서도 그 결과가 나오면 안된다는 뜻이다.)

OpenGL은 이러한 문제를 해결하기 위해서 rendering context (RC)를 사용한다.
MFC 등과 같은 Windows programming을 해보았다면 device context (DC)라는 용어를 들어본 적이 있을 것이다.
임의의 DC에서 사용하는 drawing mode나 기타 명령들이 다른 DC에 영향을 주지 않도록 해주는 개념과 동일하다고 생각하면 된다.
OpenGL를 이용하는 Windows application에서는 우선 DC 생성한 후, DC의 pixel format과 맞도록 하여 RC를 생성하는 과정이 필요하다.
RC가 생성되어 DC에 연결된 후에 수행되는 OpenGL 명령들은 RC를 통해 DC로 전송되며, DC는 graphics device interface의 호출을 받으며 application이 수행된다.
RC가 생성될 때 rendering에 필요한 states들은 기본값으로 설정된다.

하나의 application에서 다수의 RC를 생성하여 사용할 수 있다.
두 개 이상의 windows 또는 viewports를 사용하는 경우에 각각의 RC를 생성하여 관리해야 한다.
또 다른 예로 primary display와 user interface component 마다 각각의 RC를 생성하여 사용할 수도 있다.
Application을 닫으면 해당 application에서 생성되어 사용하던 RC들은 소멸되어 없어진다.

OpenGL_RC

답글 남기기