2012-12-21 23 views

답변

4

주의가 필요한 경우 제대로 작동해야합니다. parallel opengl faq을 참조하십시오. 당신이 원하는 무엇

Q: Why does my OpenGL application crash/not work when 
    I am rendering from another thread? 
A: The OpenGL context is thread-specific. You have to 
    make it current in the thread using glXMakeCurrent, 
    wglMakeCurrent or aglSetCurrentContext, depending on 
    your operating system. 
+0

창이 별도의 스레드에서 생성되는 반면, 컨텍스트는 그리기가 수행되는 주 스레드에서 만들어집니다. 문맥을 최신으로 만드는 것이 필요한가? – user1920731

+0

하나의 스레드에서 모든 OpenGL 자료를 처리하는 한 내 추측은 아닐 것입니다. –

0

완벽하게 가능하다. 심지어 OpenGL 컨텍스트는 스레드간에 마이그레이션 할 수 있으며 픽셀 형식이 호환되는 한 여러 개의 창과 함께 사용할 수도 있습니다. 하나의 제약은 한 번에 오직 하나의 스레드에서만 OpenGL 컨텍스트를 바인딩 할 수 있고 언 바운드 컨텍스트 만 바인딩 할 수 있다는 것입니다.

하나의 스레드에서 창과 컨텍스트를 만든 다음 컨텍스트의 바인딩을 해제하고 다른 스레드를 만들고 보조 스레드의 창에 컨텍스트를 다시 바인딩 할 수도 있습니다. 문제 없습니다.

당신이 알아야 할 유일한 사실은 OpenGL 자체가 멀티 스레드되는 것을 좋아하지 않는다는 것입니다. 한 번에 하나의 컨텍스트 만 스레드에 바인딩 될 수 있기 때문에 API 자체가 스레드 안전성을 유지합니다. 그러나 OpenGL 연산이 여러 스레드에서 생성되어 불쾌한 드라이버 버그를 일으키고 특정 성능에 영향을 미칠 경우 모든 부기가 필요합니다.

관련 문제