Визуализируйте OpenGL в фоновом потоке и продолжайте работать с элементами управления Cocoa в Mac OSX
Я работаю над управлением Mac OSX на основе OpenGL. В настоящее время я использую NSOpenGLView и CVDisplayLink для координации моего рендеринга в фоновом потоке. Это прекрасно работает, но мне нужно, чтобы элементы управления Какао отображались поверх этого элемента управления на основе OpenGL.
Я понимаю, что вы можете сделать это, поместив свои элементы управления Cocoa в окна без полей, однако это не кажется хорошим рабочим процессом для моих пользователей.
В качестве альтернативы я могу сделать представление на основе слоя, и у меня это работает, однако мне не нравится рендеринг содержимого OpenGL в основном потоке, иногда он блокирует основной поток при падении частоты кадров.
Есть ли образцы, которые показывают, как достичь лучшего из обоих миров?
1 ответ
Фоновый поток для рендеринга совершенно не имеет значения. Вам просто нужно включить поддержку слоев для представлений, и тогда подпредставления / элементы управления будут правильно скомпонованы поверх содержимого OpenGL. Вы также можете использовать CAOpenGLLayer для более явного наложения с CALayers.