Di recente ho abbracciato Test-Driven Development (TDD) e ha avuto impatti meravigliosi sul mio output di sviluppo e sulla resilienza della mia base di codice. Vorrei estendere questo approccio ad alcuni dei lavori di rendering che faccio in OpenGL, ma non sono stato in grado di trovare buoni approcci a questo.
Inizierò con un esempio concreto, quindi sappiamo quali tipi di cose voglio testare; diciamo che voglio creare un cubo di unità che ruota attorno ad un asse e che voglio assicurarmi che, per un certo numero di fotogrammi, ogni fotogramma sia reso correttamente.
Come posso creare un caso di test automatizzato per questo? Preferibilmente, sarei anche in grado di scrivere un test case prima di scrivere qualsiasi codice per eseguire il rendering del cubo (secondo le consuete pratiche TDD.) Tra le altre cose, vorrei assicurarmi che le dimensioni, la posizione e l'orientamento del cubo siano corretto in ogni fotogramma renderizzato. Potrei anche voler assicurarmi che le equazioni di illuminazione nei miei shader siano corrette in ogni frame.
L'unico approccio remotamente utile a questo che ho incontrato prevede il confronto dell'output renderizzato con un output di riferimento, che generalmente preclude la pratica TDD ed è molto ingombrante.
Potrei continuare su altri requisiti desiderati, ma temo che quelli che ho già elencato siano fuori portata.