CGLFlushDrawable в OpenGL не ожидает обновления монитора в OS X 10.13 и 10.14 - PullRequest
1 голос
/ 02 мая 2019

Я использую DoubleBuffering и у меня интервал обмена установлен в 1, поэтому flushBuffers должен блокировать код openGL до тех пор, пока обмен не будет завершен.

Поэтому у меня есть эта настройка в отдельном потоке:

for(i=0 i< numFrames i++) {

// some drawing stuff


[[NSOpenGLContext currentContext] flushBuffer];

glFinish();

// get the time

}

В предыдущих версиях OS X (и с другим оборудованием) это работает нормально: в большинстве случаев интервалы времени соответствуют одному кадру, а иногда - двум.

Но теперь (на новом оборудовании и 10.13 и 10.14) это не удается. У меня огромное количество очень маленьких интервалов (sub ms) и несколько больших интервалов, но, очевидно, нет кластеризации интервалов вокруг целого числа кадров.

Кстати, я делаю это, потому что очень важно, чтобы кадры доставлялись регулярно и надежно, и, если это не так, я хочу знать об этом.

Я действительно в растерянности, и я думаю, что единственная возможность состоит в том, что что-то изменилось с OS X и драйверами opengl, но Apple затрудняет переход назад к версии ОС, поэтому я подумал, что получу несколько советов, прежде чем я пойду по этой дороге.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...