Я создал небольшое приложение Cocoa, которое использует OpenGL для рисования легкого контента. Я использовал CAOpenGLLayer. Хотя само приложение очень маленькое и работает невероятно быстро, время запуска приложения совсем не удовлетворительное. В случайное время приложение будет зависать примерно на секунду или две после запуска, прежде чем показывать контент.
Я сузил проблему и обнаружил, что узким местом является функция CGLChoosePixelFormat (), которая вызывается во время инициализации OpenGL. Выполнение буквально занимает ~ 1 секунду.
Для чистого эксперимента я создал пустое приложение Cocoa и добавил в окно NSOpenGLView. Время запуска приложения сразу же увеличилось на 1-2 секунды по той же причине.
Есть ли способ борьбы с этой проблемой? Кажется, нет способа избежать использования CGLChoosePixelFormat (), это важно для того, чтобы заставить OpenGL работать на Ma c.
Также сказано, что Core Animation построена на OpenGL под капотом, но моя Core Animation приложения не демонстрируют эту проблему медленного запуска вообще. Кроме того, я попробовал символьную c точку останова на CGLChoosePixelFormat в приложении Core Animation, но она не срабатывает. Таким образом, Core Animation либо не использует OpenGL, либо есть способ инициализировать его другим способом. У кого-нибудь есть решение?
PS Я знаю, что сейчас Metal - это путь к go для 3D-графики на Mac, но мне нужно сделать этот конкретный проект на OpenGL по причинам обратной совместимости.