El modo retenido en gráficos de 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 , conserva la escena ( modelo de objeto completo de las primitivas de renderizado ) que se va a renderizar y
- Las llamadas del cliente a la biblioteca de gráficos no provocan directamente la representación real, sino que hacen uso de una amplia indirección a los recursos, gestionados (y por tanto retenidos ) por la biblioteca de gráficos . [2] Esto no excluye el uso de doble búfer . [3]
El modo inmediato es un enfoque alternativo. Históricamente, el modo retenido ha sido el estilo dominante en las bibliotecas de GUI ; [4] sin embargo, ambos pueden coexistir en la misma biblioteca y no son necesariamente excluyentes en la práctica. [5]
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 lleva a cabo la representación real junto con el procesamiento de los objetos relacionados. [2]
Algunas técnicas para optimizar la representación incluyen:
- Gestión del doble buffering [6] [7]
- Tratamiento de superficies ocultas mediante eliminación de cara posterior [8] / eliminación de oclusión ( Z-buffering ) [9]
- Solo se transfieren datos que han cambiado de un cuadro al siguiente desde la aplicación a la biblioteca
Un ejemplo de coexistencia con el modo inmediato en la misma biblioteca es OpenGL . [ dudoso – discutir ] [ verificación fallida ] [ 10 ] OpenGL tiene funciones de modo inmediato que pueden usar objetos del lado del servidor previamente definidos ( texturas , buffers de vértices y buffers de índice , sombreadores , etc.) sin reenviar datos sin cambios. [ 11 ] [ 12 ]
Algunos ejemplos de sistemas de renderizado en modo retenido incluyen Windows Presentation Foundation , [2] SceneKit en macOS, [13] y PHIGS .

Véase también
Referencias
- ^ Jin, Zhefan (mayo de 2006). "Representación de gráficos paralelos en modo retenido para entornos de diseño cooperativo". 2006 10.ª Conferencia internacional sobre trabajo cooperativo asistido por ordenador en diseño . págs. 1–6. doi :10.1109/CSCWD.2006.253142. ISBN 1-4244-0164-X.S2CID 5825966 .
- ^ abc Quinn Radich (30 de mayo de 2018). «Modo retenido frente a modo inmediato». Aplicaciones Win32 . Microsoft . Consultado el 21 de diciembre de 2019 .
- ^ stevewhims. "Consultas de predicción: aplicaciones Win32". learn.microsoft.com . Consultado el 9 de diciembre de 2022 .
- ^ Feldmeier, Alex (12 de octubre de 2013). "Programación de GUI". Informe técnico de ingeniería de software y ciencias de la computación de 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 .
- ^ "Almacenamiento en doble búfer en OpenGL" . Consultado el 7 de mayo de 2020 .
- ^ "Almacenamiento en búfer doble de DirectX" . Consultado el 7 de mayo de 2020 .
- ^ "Eliminación de rostros en 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 .
- ^ "Compatibilidad con controladores OpenGL". NVIDIA Developer . 2013-08-19 . Consultado el 2020-08-21 .
- ^ "OpenGL: la base de la industria para gráficos de alto rendimiento". The Khronos Group . 19 de julio de 2011 . 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. Recuperado el 22 de diciembre de 2019.
SceneKit y SpriteKit, por otro lado, son API de modo retenido.