Я случайно обновил свой 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 вопроса:
Есть ли у вас какие-либо предложения, как решить проблему черного экрана? Что я пробовал, но все равно получил черный экран:
Измените glFlush()
на glutSwapBuffers()
для сброса без вызова
Измените glClear (GL_COLOR_BUFFER_BIT)
на glClear(GL_COLOR_BUFFER_BIT
| GL_DEPTH_BUFFER_BIT)
(этот вызывает еще большее предупреждение). Также я попытался установить цвет на glClearColor(255,255,255,0)
(белый), но после очистки буфера цвета только черный экран. Так что glClear не работает.
Попробуйте изменить размер окна, используя форму.
Обновление компилятора Xcode для терминала до последней версии (бета)
Я использую гамма-коррекцию из 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). Я понимаю, что этот взлом также не надежен в будущем. Таким образом, здесь все еще нужно предложение или другое решение, а не изменение размера.
[ОБНОВЛЕНИЕ 2]
Я пытался изменить весь свой проект, используя GLFW. Все та же проблема черного экрана даже с GLFW. Поэтому это не проблема API.
[ОБНОВЛЕНИЕ 3]
Пытался удалить деинсталляцию XCode 10 (которая поставляется с обновлением Mojave). Затем установите XCode 9.41 (Sierra) и Command Tools 9.41. На данный момент GLFW работает, а GLUT все еще не работает.