Missing GL version

목표: C code에서 offscreen rendering을 하고싶다.
(내가 원하는 곳에서 내 마음대로 내 GPU를 사용해서 OpenGL drawing을 하고싶다.)

이렇게 하면 편한 경우가 종종 있다.
(예를 들면, depth test, per pixel image processing 등)

GLSL vertex shader와 fragment shader를 사용하면, 간단하게 GPU computing이 가능하며, texture sampling시 자동적인 interpolation과 hardware 기반의 빠른 access가 가능하다.

하지만, window creation 없이 OpenGL context를 얻을 수 없다.
(보다 정확하게 말하면 지금까지 방법을 찾지 못했다.)

만약 glutCreateWindow() 없이 glewInit()만 호출한다면 “Missing GL version” error가 발생한다.

신기하게도 Maya plug-in 내의 임의의 함수에서는 OpenGL window 없이 glewInit()을 사용해도 잘 작동하는데,
이는 아마도 Maya에서 자체적으로 OpenGL context를 가지고 있기 때문인 것으로 추측된다.

OpenGL context란 OpenGL을 이용해서 무언가를 그리기 위해 관련된 데이터를 저장하는 state machine을 말한다. OpenGL을 이용해서 무언가를 그리기 위해서는 우선 OpenGL context를 생성하고, 이렇게 생성한 OpenGL context 안에서 그려주어야 한다. 다 그리고 나서 application이 종료되면 생성한 context는 소멸되고 관련 resource는 반환된다. OpenGL context를 creation하고 binding하는 방법은 각 window platform 마다 다르다. GLUT, GLFW 등의 utility들은 window를 생성하면 해당 window에 맞도록 OpenGL context를 자동적으로 생성해준다. Windows는 wglCreateContext, Linux는 glXCreateContext를 이용하는 방법이 있다고 하는데 아직 테스트는 해보지 못했다.

Add a Comment