Обновление проекта до 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));
Другие вопросы по тегам