lock&_lock Ответов: 1

Как обрабатывать opengl black screen после обновления до macos mojave 10.14 ?


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

Я читал много таких же проблем с черным экраном на OpenGL после обновления Mojave в StackOverflow. Но на данный момент лишь немногие из них действительно приняли ответ, и ответы не работают на меня. Поэтому, когда я запускаю его, иногда он визуализируется, а иногда это просто черный экран.

Это моя главная петля :

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();
}


Что я уже пробовал:

Что я уже пробовал :

1. Изменение glFlush() в glutSwapBuffers() сбросить без звонка
2. Измените glClear(GL_COLOR_BUFFER_BIT) на glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); (это вызывает еще большее предупреждение)
3. Попробуйте изменить размер экрана. Все еще есть черный экран
4. обновите компилятор Xcode для терминала

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

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

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

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

Все тот же черный экран. Есть предложения ?

1 Ответов

Рейтинг:
0

KarstenK

Я задаюсь этим вопросом, потому что Apple говорит, что OpenGL все еще поддерживается. Вы должны прочитать эту статью о Смешивание металла и рендеринга OpenGL в представлении что должно сработать.

Особенности XCode для Отладка OpenGL они великолепны.

Подумайте о переходе на металл, потому что он имеет реальные преимущества. Вы можете прочитать мою статью о Металл на iOS что показывает вам скачок в этом направлении.


lock&_lock

- Привет, спасибо. Я прочту статью. Но я боюсь, что переход на металл не будет лучшим вариантом для меня в настоящее время. Я совсем не знаком с металлом, и, честно говоря, даже сейчас я не всегда буду работать с MacOs, поэтому я предпочел бы использовать OpenGL для кросс-платформенного удобства. Кроме того, я обновил свой вопрос, не могли бы вы взглянуть и дать какое-то предложение, может быть ? Спасибо.