He leído mucho sobre openGL y gpus y gráficos en general, y el triple buffer se menciona semi-frecuentemente como un aumento de rendimiento libre. Sé por qué me ayuda; en efecto, puede hacer v-sync sin limitarse a una selección de velocidad de fotogramas de 60, 30, 20 o 15, etc., por lo que puede lograr, por ejemplo, 55 fps. Pero, ¿hay realmente un costo para esto? Intuitivamente, esperaba que el triple almacenamiento en búfer retrasara la salida en un cuadro, agregando un retraso muy pequeño a todo.¿El triple buffer es realmente un impulso de rendimiento gratuito?
Respuesta
A 55 FPS, un fotograma es un poco inferior a 20 ms. Por lo tanto, no es muy gratis, pero casi siempre vale la pena el costo.
A 15 FPS, sin embargo, puede ser bastante notorio. (Por cierto, este es un portátil POS. La mayoría de los juegos en 3D corren así de rápido para mí. Algunos incluso más lentos.)
Algunas personas notan el desfase, especialmente a velocidades de cuadro más bajas, y en ocasiones el triple buffer no funciona tan bien como esperado. (En OpenGL, en particular, algo que el hardware no admite bien puede recurrir a la emulación de software (potencialmente muy lenta). No debería ser un gran problema en estos días, pero eh.) Por lo tanto, la mayoría de los programas que usan triple buffer también incluye una opción para deshabilitarlo. Es posible que desee considerar hacer lo mismo.
Una cita del excelente libro "Real-Time Rendering" (http://www.realtimerendering.com/) de Akenine-Möller y otros, página 835, que resume bastante bien lo que ya ha sugerido en la respuesta a su propia pregunta, considerando lag:
"buffer triple tiene una gran ventaja sobre el doble buffer. Usando , el sistema puede acceder a la memoria intermedia en espera mientras se espera la vertical de retrazo. Con el doble buffer, un swap puede paralizar el canal de gráficos. [... ] El inconveniente del triple almacenamiento en búfer es que la latencia aumenta hasta un marco completo . Este aumento retrasa la reacción a las entradas del usuario, como las pulsaciones de teclas y el mouse o joystick se mueve ".
- 1. Pobre impulso. Rendimiento de ASIO
- 2. ¿Cuándo se necesita realmente 'Rendimiento'?
- 3. ¿Quién es el buffer setvbuf de free?
- 4. ¿Es seguro sprintf (buffer, "% s [...]", buffer, [...])?
- 5. ¿qué es un buffer de tienda?
- 6. ¿El montón es realmente un montón?
- 7. ¿Qué es el buffer de salida?
- 8. ¿cuál es el signo de dólar triple en jquery?
- 9. impulso :: :: asio async_write() frente impulso :: asio :: write()
- 10. En Oracle, ¿a qué se refiere realmente 'Buffer Gets'?
- 11. Cuál es el tamaño máximo de un Node.js Buffer
- 12. OpenMP paralelización de la multiplicación de matrices por un ciclo triple (problema de rendimiento)
- 13. ¿Es posible mover un impulso :: opcional?
- 14. ¿Qué es realmente un @selector?
- 15. ¿Qué es un "buffer" en VIM?
- 16. Cómo discrimina un impulso cancelado de un impulso reactivado deadline_timer
- 17. strcpy cuando el buffer de dest es más pequeño que el buffer de src
- 18. ¿Cuál es el operador === (triple-igual) en Scala Koans?
- 19. En SQLite, ¿las declaraciones preparadas realmente mejoran el rendimiento?
- 20. ¿Cuál es el mejor software gratuito de seguimiento de pruebas?
- 21. ¿Es un PHP SplHeap realmente un montón?
- 22. Utilizando ofstream para salida con buffer para obtener rendimiento
- 23. iOS OpenGL ES Logical Buffer Loads
- 24. ¿Cuál es el mejor motor portátil gratuito de 3D/2D?
- 25. ¿Qué es un buen multiplexor de terminal gratuito?
- 26. ¿Es realmente útil el protect_from_forgery de Rails?
- 27. ¿Cuál es el mejor plugin de Eclipse gratuito para un desarrollador de Java?
- 28. Mostrando un Triple en Google Maps
- 29. Un operador ternario triple anidado algo doloroso
- 30. ¿Es posible simular un mensaje de buffer de protocolo Java?