GOOGLE ADS

среда, 27 апреля 2022 г.

glXSwapBuffers сбивает время

У меня были очень глючные тайминги в моем цикле рендеринга, из-за чего рендеринг заикался. Я установил время вокруг моего glXSwapBuffersзвонка следующим образом:

Timer timer;
glXSwapBuffers(display, window);
timer();
if (timer.elapsed_seconds > 0.1)
printf("stutter(%f)\n\r", timer.elapsed_seconds);

И я получаю такие результаты, как:

stutter(0.109081)
stutter(0.108956)
stutter(0.662115)
stutter(0.759556)
stutter(0.657789)
stutter(0.283185)
stutter(0.105581)
stutter(0.106285)
stutter(0.572289)
stutter(0.199908)
stutter(0.218540)
stutter(0.752033)
stutter(0.148225)

Что может быть причиной того, что вызов glXSwapBuffers занимает так много времени? Как я могу исправить заикание?


Решение проблемы

Согласно документации:

glXSwapBuffers выполняет неявный glFlush перед возвратом.

Если вы сделаете glFlushи glFinishсначала, вы, вероятно, обнаружите, что время берется там, а не в буферной подкачке. Если да, то это потому, что вы отправляете слишком много команд GL, и вам нужно оптимизировать свой код.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...