Me gustaría "enganchar" en un juego en ejecución, digamos Mario Bros, y capturar cada fotograma renderizado ... guardando ese fotograma en un archivo de imagen. Un buen ejemplo de algo similar es FRAPS. --Nota: no quiero capturar toda la pantalla / escritorio. Quiero capturar una ventana específica.
He echado un vistazo a OBS (Open Broadcasting Software) pero no es particularmente rápido. No me malinterpreten, es un gran software, pero desafortunadamente no hay / hay poca documentación, lo que hace que un proyecto masivo escrito en c y c ++ sea casi inaccesible para un programador nuevo en c ++.
También he echado un vistazo a GamingAnywhere , pero desafortunadamente, no puedo hacer que funcione, hay muy poca / ninguna documentación, solo se ejecuta en VS2010 y es desordenado (con una mala denominación variable). Sin embargo, es un proyecto de investigación, por lo que es comprensiblemente indocumentado y desordenado.
Sé que esto se puede hacer con OpenGL, GDI y con Direct3D, pero no puedo encontrar algunos buenos ejemplos en la red.
Leí que se puede usar glReadlPixels (usando OpenGL) y he leído la documentación , pero la publicación no mencionó nada sobre conectar a un juego / gráficos en ejecución.
Preguntas:
¿Puedo conectarme a los gráficos de un juego desarrollado con OpenGL, usando, por ejemplo, Direct3D? ¿La biblioteca utilizada para enganchar tiene que ser la misma que la utilizada por el juego?
¿Cómo me engancho a los cuadros renderizados del juego para poder enviar esos cuadros a archivos de imagen o de video? (Solo algunos enlaces o una breve explicación de lo que necesito hacer sería genial)
BackBuffer: leí que es muy rápido acceder a BackBuffer para recuperar los marcos. ¿Alguien tiene un ejemplo para mí sobre cómo hacer esto con las últimas bibliotecas? He descubierto que la mayoría de los ejemplos están desactualizados.
Para mis propósitos, ¿hay claramente "esto es más rápido que eso"? Lo que quiero decir es, ¿sería, por ejemplo, OpenGL, más rápido para mis propósitos?
Si alguien sabe de un proyecto de código abierto (que hace esencialmente lo que necesito) que está activamente desarrollado y bien documentado, me encantaría saberlo.