프로그래밍/OpenGL

OpenGL 렌더링 컨텍스트

이재만박사 2017. 3. 5. 05:28

윈도우즈 응용 프로그램은 다수의 창을 포함하는 것이 보통


따라서 원한다면 각각의 창에 픽셀 포맷을 지정하는 것도 가능


각각의 창에 대해 한 번씩 SetPixel Format 함수를 호출


현재의 렌더링 창을 지정하는 방법을 구현


GDI 함수들이 이용하는 창 장치 컨텍스트의 개념이 OpenGL 환경에서는 렌더링 컨텍스트라 불리는 개념에 포함


장치 컨텍스트가 GDI를 위한 드로잉 모드와 명령을 기억하는 것처럼 렌더링 컨텍스트는 OpenGL 설정과 명령을 기억


wglCreateContext 함수를 이용하면 OpenGL 렌더링 컨텍스트를 만들 수 있음


이 함수는 올바른 픽셀 포맷을 가진 창의 장치 컨텍스트를 인자로 받으며 OpenGL 렌더링 컨텍스트의 데이터 타입은 HGLRC 이다


HGLRC hRC;

HDC hDC;


hRC = wglCreateContext(hDC);


렌더링 컨텍스트는 이를 만드는데 이용한 창과 호환


두 개의 창이 서로 다른 드로잉 모드나 원근 모드를 사용할 수 있으므로 응용 프로그램은 두 개 이상의 렌더링 컨텍스트 가질 수 있음


OpenGL 명령은 작업할 목적지 창을 알아야 하므로 한 스레드 당 하나의 렌더링 컨텍스만을 활성화 


활성화된 컨텍스트를 "현재 컨텍스트"


렌더링 컨텍스트는 디바이스 컨텍스트와 연결되며 결국 특정한 창과 연결


OpenGL 명령이 어느 창에 렌더링 해야 하는지 알 수 있다


하나의 창에서 다른 창으로 OpenGL 렌더링 컨텍스트를 바꿀 수도 있지만 이 때는 각 창이 같은 픽셀 포맷을 가져야 함


렌더링 컨텍스트를 활성화 하고 특정한 창과 연결하는 데는 wglMakeCurrent 함수가 사용


wglMakeCurrent(hDC, hRC);