2013-01-10 2 views
0

OpenGL 기반 Mac OS X 컨트롤에서 작업하고 있습니다. 현재 NSOpenGLView 및 CVDisplayLink를 사용하여 배경 스레드에서 렌더링을 조정하고 있습니다. 이것은 잘 작동하지만 코코아 컨트롤이이 OpenGL 기반 컨트롤 위에 표시되도록해야합니다.백그라운드 스레드에서 OpenGL을 렌더링하고 Mac OSX의 코코아 컨트롤과 계속 작동합니다.

나는 사용자를 위해 매우 좋은 워크 플로우와 같이 보이지 않는 국경없는 윈도우에 코코아 컨트롤을 넣는 것으로 이것을 할 수 있다는 것을 알고 있습니다.

다른 방법으로 레이어를 지원하는 레이어를 만들 수 있습니다.하지만 메인 스레드에서 내 OpenGL 콘텐츠를 렌더링하는 것을 좋아하지 않습니다. 프레임 속도가 떨어지면 메인 스레드를 차단하는 경우가 있습니다.

두 가지 장점을 모두 달성하는 방법을 보여주는 샘플이 있습니까?

+0

CVDisplayLink는 항상 다른 스레드에서 렌더링되지 않습니까? – TheAmateurProgrammer

+0

예. 성공적으로 CVDisplayLink 및 NSOpenGLView 배경 스레드에서 렌더링. 문제는 NSOpenGLView를 통해 Cocoa 컨트롤을 사용할 수 없다는 것입니다. – user1968080

+0

그렇다면 'OpenGL 콘텐츠를 메인 스레드에서 렌더링하는 것을 좋아하지 않는다'는 것은 무엇을 의미합니까? – TheAmateurProgrammer

답변

0

렌더링을위한 백그라운드 스레드는 완전히 관련이 없습니다. 뷰에 대해 레이어 백킹을 활성화하면 하위 뷰/컨트롤이 OpenGL 컨텐트 위에 올바르게 합성됩니다. CALayers를 사용하여보다 명확한 레이어링을 위해 CAOpenGLLayer를 사용할 수도 있습니다.

관련 문제