Визуализируйте OpenGL в фоновом потоке и продолжайте работать с элементами управления Cocoa в Mac OSX

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

Я понимаю, что вы можете сделать это, поместив свои элементы управления Cocoa в окна без полей, однако это не кажется хорошим рабочим процессом для моих пользователей.

В качестве альтернативы я могу сделать представление на основе слоя, и у меня это работает, однако мне не нравится рендеринг содержимого OpenGL в основном потоке, иногда он блокирует основной поток при падении частоты кадров.

Есть ли образцы, которые показывают, как достичь лучшего из обоих миров?

1 ответ

Фоновый поток для рендеринга совершенно не имеет значения. Вам просто нужно включить поддержку слоев для представлений, и тогда подпредставления / элементы управления будут правильно скомпонованы поверх содержимого OpenGL. Вы также можете использовать CAOpenGLLayer для более явного наложения с CALayers.

Другие вопросы по тегам