Эффект разрыва OpenGL при рендеринге на EGL

#qt #opengl-es #rendering #tearing #egl

#qt #opengl-es #рендеринг #разрыв #egl

Вопрос:

У меня есть несколько приложений Qt, отображаемых с использованием OpenGL на поверхностях, предоставляемых реализацией EGL на плате ARM. Я испытываю какие-то разрывы при рендеринге.

Прочитав, я обнаружил, что это может быть проблема, связанная с vsync, поэтому я использовал вызов EGL eglSwapInterval(EGLDisplay, 1), но разрывы все еще сохраняются. Достаточно ли этого вызова для устранения разрыва? Должен ли этот вызов полностью устранить такой эффект? Возможно ли, что некоторые разрывы остаются?

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

1. Есть какие-либо обновления по этому вопросу, @Luca?

2. Я добавил ответ. Я все равно не знаю, насколько это может помочь.

Ответ №1:

После прочтения исходных текстов реализации EGL, которые мне дали, я обнаружил, что для функции eglSwapInterval не было реализации. Потребовалась конкретная реализация. После этого разрывов больше не будет.

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

1. Вы действительно внедрили eglSwapInterval для i.MX6, чтобы решить проблему?

2. Ах, извините. Я смешал ответ @Ray с вашим и подумал, что вы также работаете над процессорами i.MX6. Тем не менее, можете ли вы подробнее рассказать о реализации eglSwapInterval ?

3. Это было специфично для моего драйвера, который не был разработан для обеспечения этой функции. Использование двойной буферизации должно устранить этот эффект.

Ответ №2:

FB_MULTI_BUFFER=3 переменная среды включит множественную буферизацию в Freescale i.MX 6 (Sabrelite) плата с какой-то недавней сборкой LTIB.