Estive adotando o TDD (Test-Driven Development) recentemente e isso teve um impacto maravilhoso no resultado do meu desenvolvimento e na resiliência da minha base de código. Gostaria de estender essa abordagem a alguns dos trabalhos de renderização que faço no OpenGL, mas não consegui encontrar boas abordagens para isso.
Vou começar com um exemplo concreto para sabermos que tipo de coisas eu quero testar; digamos que eu queira criar um cubo de unidade que gire em torno de algum eixo e que garanta que, para algum número de quadros, cada quadro seja renderizado corretamente.
Como posso criar um caso de teste automatizado para isso? De preferência, eu seria capaz de escrever um caso de teste antes de escrever qualquer código para renderizar o cubo (por práticas usuais de TDD). Entre muitas outras coisas, eu gostaria de garantir que o tamanho, o local e a orientação do cubo sejam correto em cada quadro renderizado. Talvez eu queira ter certeza de que as equações de iluminação em meus shaders estão corretas em cada quadro.
A única abordagem remotamente útil que encontrei envolve a comparação da saída renderizada com uma saída de referência, que geralmente impede a prática do TDD, e é muito complicada.
Eu poderia continuar com outros requisitos desejados, mas temo que os que eu listei já estejam fora de alcance.