Обновление проекта до OpenGL 4.1 на OSX - Использование NSOpenGLProfileVersion4_1Core замедляет рендеринг
Я пытаюсь обновить проект OSX OpenGL до OpenGL 4.1. Мои шейдеры используют #version 410
и все работает и довольно быстро. Сегодня я заметил, что есть новый NSOpenGLPFAOpenGLProfile
значение для 4.1, поэтому я обновил профиль формата пикселей из NSOpenGLProfileVersion3_2Core
в NSOpenGLProfileVersion4_1Core
и теперь рендеринг безумно медленный. Мой код инициализации формата пикселей выглядит следующим образом:
NSOpenGLPixelFormatAttribute attrs[] =
{
NSOpenGLPFADoubleBuffer,
NSOpenGLPFADepthSize, 24,
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
0
};
NSOpenGLPixelFormat *pf =
[[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
Кто-нибудь знает, почему это будет намного медленнее - есть ли что-то еще, что мне нужно обновить?
2 ответа
С помощью NSOpenGLProfileVersion4_1Core
на Mavericks вызывает полный отказ программного обеспечения. Это не проблема Йосемити.
Используя NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core в любом случае (10.9 или 10.10) фактически активирует OpenGL и GLSL версии 4.1. Я использовал это сам в обоих случаях.
NSOpenGLProfileVersion3_2Core является неправильным. Это на самом деле включает последнюю доступную версию, не обязательно 3.2.
Убедитесь, что это верно для следующих вызовов в вашем методе prepareOpenGL:
NSLog(@"OpenGL version = %s", glGetString(GL_VERSION));
NSLog(@"GLSL version = %s", glGetString(GL_SHADING_LANGUAGE_VERSION));