El modo retenido en gráficos por computadora es un patrón importante de diseño de API en bibliotecas de gráficos, [1] en el que
- la biblioteca de gráficos , en lugar del cliente , retiene la escena ( modelo de objeto completo de las primitivas de renderizado ) para ser renderizado y
- las llamadas del cliente a la biblioteca de gráficos no causan directamente la renderización real, sino que hacen uso de una amplia indirecta a los recursos, administrados, por lo tanto retenidos , por la biblioteca de gráficos . [2] No excluye el uso de doble búfer .
El modo inmediato es un enfoque alternativo. Históricamente, el modo retenido ha sido el estilo dominante en las bibliotecas GUI ; [3] sin embargo, ambos pueden coexistir en la misma biblioteca y no son necesariamente excluyentes en la práctica. [4]
Descripción general
En el modo retenido, las llamadas del cliente no provocan directamente la representación real, sino que actualizan un modelo interno abstracto (normalmente una lista de objetos) que se mantiene dentro del espacio de datos de la biblioteca. Esto permite que la biblioteca optimice el momento en que se realiza la renderización real junto con el procesamiento de objetos relacionados. [2]
Algunas técnicas para optimizar el renderizado incluyen:
- gestionar el doble almacenamiento en búfer [5] [6]
- tratamiento de superficies ocultas mediante eliminación selectiva del dorso [7] / eliminación selectiva por oclusión ( amortiguación Z ) [8]
- solo transfiriendo datos que han cambiado de un marco al siguiente de la aplicación a la biblioteca
Ejemplo de coexistencia con modo inmediato en la misma biblioteca es OpenGL . [9] OpenGL tiene funciones de modo inmediato que pueden usar objetos del lado del servidor previamente definidos ( texturas , búferes de vértices y búferes de índice , sombreadores , etc.) sin reenviar datos sin cambios. [10] [11]
Ejemplos de sistemas de renderizado en modo retenido incluyen Windows Presentation Foundation , [2] SceneKit en macOS, [12] y PHIGS .
Existe otro patrón importante de diseño de API en las bibliotecas de gráficos: el modo Inmediato .
Ver también
Referencias
- ^ Jin, Zhefan (mayo de 2006). "Representación de gráficos paralelos en modo retenido para entornos de diseño cooperativo" . 2006 Décima Conferencia Internacional sobre Trabajo Cooperativo Soportado por Computadora en Diseño : 1–6. doi : 10.1109 / CSCWD.2006.253142 . ISBN 1-4244-0164-X. S2CID 5825966 .
- ^ a b c Quinn Radich (30 de mayo de 2018). "Modo retenido versus modo inmediato" . Aplicaciones Win32 . Microsoft . Consultado el 21 de diciembre de 2019 .
- ^ Feldmeier, Alex (12 de octubre de 2013). "Programación GUI" . Informe técnico de Ingeniería de Software y Ciencias de la Computación de la UWP . Consultado el 22 de diciembre de 2019 .
El modo retenido ha sido el estándar durante años. Casi todas las GUI están en modo retenido.
- ^ QuinnRadich. "Modo retenido versus modo inmediato - aplicaciones Win32" . docs.microsoft.com . Consultado el 21 de agosto de 2020 .
- ^ "Doble búfer OpenGL" . Consultado el 7 de mayo de 2020 .
- ^ "Doble búfer de DirectX" . Consultado el 7 de mayo de 2020 .
- ^ "Eliminación de rostros OpenGL" . Consultado el 7 de mayo de 2020 .
- ^ "Eliminación de oclusión de DirectX" . Consultado el 7 de mayo de 2020 .
- ^ "OpenGL" . Consultado el 4 de mayo de 2020 .
- ^ "Soporte del controlador OpenGL" . Desarrollador NVIDIA . 2013-08-19 . Consultado el 21 de agosto de 2020 .
- ^ "OpenGL - La base de la industria para gráficos de alto rendimiento" . El Grupo Khronos . 2011-07-19 . Consultado el 21 de agosto de 2020 .
- ^ Weiher, Marcel (24 de febrero de 2017). Ajuste del rendimiento de iOS y macOS: Cocoa, Cocoa Touch, Objective-C y Swift . Addison-Wesley Professional. ISBN 9780133085532. Consultado el 22 de diciembre de 2019 .
SceneKit y SpriteKit, por otro lado, son API de modo retenido