Estoy escribiendo un programa OpenGL que se dibuja en un Buffer Auxiliar, luego el contenido del Buffer Auxiliar se acumula en el Buffer de Acumulación antes de ser GL_RETURN-ed al Buffer Back (esencialmente para ser compuesto en la pantalla). En resumen, estoy haciendo una especie de desenfoque de movimiento. Sin embargo, lo extraño es que cuando recompilaba y volví a ejecutar mi programa, estaba viendo el contenido del Buffer Auxiliar/de Acumulación del programa anterior. Esto no tiene sentido. ¿Estoy malinterpretando algo, el estado de OpenGL no debería reiniciarse por completo cuando se reinicia el programa?¿Cómo podría permanecer el estado de los búfers OpenGL entre ejecuciones del programa?
Estoy escribiendo un programa SDL/OpenGL en Gentoo Linux Drivers nVidia GeForce Go 195.36.31 en 6150.
Gracias, al menos ahora sé que no es un comportamiento inesperado, aunque es simplemente escalofriante ... –
Estoy de acuerdo. Desea agregar: bajo ciertas condiciones, se les solicita a los controladores de video que inicien en cero la memoria asignada, debido a consideraciones de "seguridad" (el programa malvado puede querer saber lo que otros dibujaron). Esto es ridículo (yo diría que esa debería ser la responsabilidad de ese programa que quiere ocultar su producción intermedia), pero así son las cosas. – valdo
Hice un montón de Direct3D a través de la era de DirectX9. Cuando comencé, framebuffers, superficies, etc. invariablemente no se inicializarían y el código podría exponer fácilmente el contenido de una ejecución anterior. En algún momento, Microsoft o los proveedores de controladores deben haber decidido "arreglar" esto y en su lugar, obtendrían búferes en blanco. Creo que fue hecho en nombre de la seguridad. Yo diría que las preocupaciones de seguridad son válidas; no toleraremos un sistema que entregue a los procesos de usuario la RAM que contiene desechos de otros usuarios no eliminados y la RAM del framebuffer no se debe considerar de manera diferente. – timday