Tartamudeo en pantalla y análisis de la arquitectura de renderizado OpenGL en iOS
La congelación de pantalla se refiere a problemas como el desgarro (es decir, la imagen se muestra en la posición incorrecta), la pérdida de cuadros (el mismo cuadro se muestra repetidamente) al mostrar imágenes gráficas, lo que hace que el usuario vea una excepción.
¿Por qué sucede esto? La solución actual es utilizar doble buffer de sincronización vertical, lo que forzará la sincronización a expensas de la pérdida de fotogramas.
La siguiente es una ilustración del proceso de doble caché de sincronización vertical. Si hay algún error en la descripción, no dude en dejar un comentario.
Después de utilizar el método de doble caché de Apple, Surge un nuevo problema: los fotogramas eliminados.
¿Qué es la pérdida de fotogramas? En pocas palabras, cuando la pantalla muestra repetidamente el mismo cuadro de datos, se elimina el cuadro.
Como se muestra en la figura: la pantalla actual muestra A. Después de recibir la señal vertical, B es procesada por la CPU y la GPU. aún no está listo Cuando la pantalla todavía muestra A (hay un error en la imagen y el segundo es la GPU)
El proceso de renderizado general en iOS es el siguiente
Representación de UIView y CALayer
La siguiente figura ilustra cómo las vistas y las capas se representan entre sí
En el sitio web oficial de Apple descripción. Representar, componer y animar elementos visuales. La animación es solo una parte de CoreAnimationg, que en realidad es un motor de composición cuyas principales responsabilidades incluyen la implementación de renderizado, composición y animación.
CoreAnimation en iOS se ve así
¿Por qué Apple proporciona dos jerarquías paralelas (UIKit y APPKit) basadas en UIView y CALayer?
El proceso de renderizado en CoreAnimation se muestra en la figura.
Se divide en dos partes principales:
Parte de CoreAnimation
Parte de GPU.
La arquitectura de renderizado en OpenGL se muestra en la figura
Está dividida en dos módulos principales
Análisis de arquitectura
De la figura Podemos Como puedes ver, la arquitectura de renderizado en OpenGL se divide en tres tipos:
parte GPU