LINUX.ORG.RU

openGL кеширует вызовы? Или как профилировать

 ,


1

2

Пишу на libGDX, некоторые люди жалуется на просадку ФПС, начал профилировать, но вот вопрос, а опенГЛ на самом деле все рисует когда происходит вызов методов или он все запоминает,а рисовать будет в конце кадра и ориентироваться на это время нельзя? Собственно с виду все похоже на то что он рисует сразу по месту

★★★

кто знает что происходит внутри блоба драйвера

anonymous
()

Команды в OpenGL конечно же сразу не выполняются. У libGDX был какой-то встроенный профайлер, который подсчитывает количество drawcall-ов, переключений шейдеров, биндингов текстур и т.п.

Amp ★★★
()
Ответ на: комментарий от Amp

который подсчитывает количество drawcall-ов

Так мне это особо не поможет, другое дело что обычный профайлер показывает какие методы долго выполняются

abs ★★★
() автор топика
Ответ на: комментарий от abs

Вызов opengl-функции совсем не означает, что по после ее вызова команда выполнилась на видеокарте и даже не означает, что она вообще начала свое выполнение. Рассматривай этот api как асинхронный. Поэтому толку тут от CPU-профайлера. К оптимизации рендеринга нужно подходить со стороны его эффективного использования - группировать и отправлять геометрию на отрисовку большими буферами, уменьшая количество drawcall-ов, паковать текстуры в атласы и т.п.

Amp ★★★
()

ориентироваться на это время нельзя?

Драйвер intel, например, сбрасывает очередь команд тогда, когда ему захочется. Один и тот же glEnable() может как сгенерировать запрос к X серверу, так и просто запомнить команду для выполнения потом.

i-rinat ★★★★★
()

OpenGL почти не выдвыгает требований по времени выполнения операций. есть несколько точек синхронизации (вроде glReadPixels), но в остальном всё отдаётся на откуп авторам реализации

jtootf ★★★★★
()

Пишу программу на C++. Скажите ОС кэширует вызовы?

x4DA ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.