Recientemente he estado adoptando el desarrollo basado en pruebas (TDD) y ha tenido un impacto maravilloso en mi producción de desarrollo y la resistencia de mi base de código. Me gustaría extender este enfoque a algunos de los trabajos de renderizado que hago en OpenGL, pero no he podido encontrar ningún buen enfoque para esto.
Comenzaré con un ejemplo concreto para que sepamos qué tipo de cosas quiero probar; Digamos que quiero crear un cubo unitario que gire alrededor de algún eje, y que quiero asegurarme de que, para una cierta cantidad de cuadros, cada cuadro se represente correctamente.
¿Cómo puedo crear un caso de prueba automatizado para esto? Preferiblemente, incluso podría escribir un caso de prueba antes de escribir cualquier código para renderizar el cubo (según las prácticas habituales de TDD). Entre muchas otras cosas, me gustaría asegurarme de que el tamaño, la ubicación y la orientación del cubo sean correcto en cada cuadro renderizado. Incluso puedo asegurarme de que las ecuaciones de iluminación en mis sombreadores sean correctas en cada cuadro.
El único enfoque remotamente útil para esto que he encontrado implica comparar la salida renderizada con una salida de referencia, lo que generalmente impide la práctica de TDD, y es muy engorroso.
Podría continuar con otros requisitos deseados, pero me temo que los que he enumerado ya están fuera de mi alcance.