Черный экран OpenGL и гамма-коррекция после обновления до MacOs Mojave 10.14? - PullRequest
0 голосов
/ 31 октября 2018

Я случайно обновил свой Mac, и теперь OpenGL устарела в последней версии MacOS Mojave. Я использую OpenGL + GLUT (я знаю, что это старая, но мне просто нужна простая программа) и работаю на терминале (не используя Xcode). С той же самой программой, которая отлично работала в Сьерре, я получил так много устаревших предупреждений OpenGL в Мохаве и сумел подавить все предупреждения, используя -Wno-deprecated-declarations, но теперь у меня только черный экран.

Я прочитал много таких же проблем с черным экраном на OpenGL после обновления Mojave, как Черный экран на OpenGL и Mac Mojave + opengl Задать вопрос . Но на данный момент никто из них не принял ответ, и предоставленные ответы не работают на меня.

Это мой основной цикл:

Код:

static void mainLoop(void)
{    glClearColor(0,0,0,0);
    glClear(GL_COLOR_BUFFER_BIT);
    //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_FRAMEBUFFER_SRGB);

    argDrawMode2D(vp);                      //draw to the screen

    char string[256];
    glColor3f(1,1,1);
    sprintf(string, "Some strings", string1 );
    argDrawStringsByIdealPos( string, 10.0, 25.0 );

    argSwapBuffers();   //clear the buffer
    glFlush();
}

У меня есть 2 вопроса:

  1. Есть ли у вас какие-либо предложения, как решить проблему черного экрана? Что я пробовал, но все равно получил черный экран:

    • Измените glFlush() на glutSwapBuffers() для сброса без вызова

    • Измените glClear (GL_COLOR_BUFFER_BIT) на glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) (этот вызывает еще большее предупреждение). Также я попытался установить цвет на glClearColor(255,255,255,0) (белый), но после очистки буфера цвета только черный экран. Так что glClear не работает.

    • Попробуйте изменить размер окна, используя форму.

    • Обновление компилятора Xcode для терминала до последней версии (бета)

  2. Я использую гамма-коррекцию из OpenGL с glEnable(GL_FRAMEBUFFER_SRGB), а после Мохаве я сталкиваюсь с этим

    "Не удалось подтвердить: (значение> = 0.0f && значение <= 1.0f), функция LinearToSRGB "</p>

    Гамма-коррекция openGL больше не работает?

Любое предложение?

[ОБНОВЛЕНИЕ 1]

Шаг 3 выше: Попробуйте изменить размер окна с помощью изменения формы.

Похоже, это работает немного после того, как я перешел в полноэкранный режим, после этого Mojave 'hack' из Университета Бата, чтобы изменить размер вашего окна в другое измерение, чем исходный размер. Это не помогло, когда я установил другой размер (меньше / больше), но когда я установил в полноэкранный режим, используя glutFullScreen();, мой экран рендерился, на данный момент переход кадра не плавный, и я все еще работаю над этим.

Кроме того, я установил свои fps на 60fps и распечатал их. И после этого хака я получил случайные fps от 100-200 fps, несмотря на то, что частота обновления моего Mac составляла только 90 Гц. Это потому, что команда resize, когда я закомментировал команду resize, получил черный экран, но напечатанный fps в терминале был верным (около 60 fps). Я понимаю, что этот взлом также не надежен в будущем. Таким образом, здесь все еще нужно предложение или другое решение, а не изменение размера.

enter image description here

[ОБНОВЛЕНИЕ 2]

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

[ОБНОВЛЕНИЕ 3]

Пытался удалить деинсталляцию XCode 10 (которая поставляется с обновлением Mojave). Затем установите XCode 9.41 (Sierra) и Command Tools 9.41. На данный момент GLFW работает, а GLUT все еще не работает.

...