Questa settimana si chiude il rilascio dei software su cui lavoro in ufficio. Sono giorni ovviamente un pò febbricitanti. Eppure ero sicuro di aver finito tutto il mio lavoro la settimana scorsa e mi preparavo mentalmente ad una settimana di riposo...
Ma...
Diversi nostri clienti hanno problemi con i driver OpenGL. Questi
benedetti driver, realizzati dalle pių prestigiose aziende del settore,
sono pieni di bachetti microscopici e non documentati (e forse neanche
noti), che pensano sia giusto (sempre per la famosa legge di Murphy)
venire fuori soltanto sulle macchine dei tuoi clienti e mai su quelli
degli sviluppatori. Cosė mi sono messo in cerca di report di ogni
genere che riguardassero incompatibilità più o meno note. Sulla
Knowledge Base di Microsoft ho scoperto che i bug risolti nelle varie
versioni di Windows e nei service pack relativi a opengl sono
innumerevoli... E così ne ho preso nota. Poi ho preso alcune
indicazioni dalle KB per sviluppatori della ATI e della nVidia (in
particolare quest'ultima è impressionante).
Fatto tutto ciò, ho preso la nostra bella classettina che contiene
le chiamate opengl e l'ho "sistemata" in base a tutte le annotazioni
che avevo preso - alla fine si riducevano a 3-4 relativamente al nostro
codice. Ho fatto qualche test di regressione, sembrava funzionare
tutto. Ho messo le modifiche nel ramo di sviluppo principale e abbiamo
ricompilato tutto. Solo oggi però ho lanciato per altri motivi altri
test e mi sono reso conto che si verificavano dei problemi addirittura
sul mio computer - cosa finora mai vista - legati ad OpenGL, e ho
scoperto un'altra cosa raccapricciante, dopo ore di debug e stress. Per
qualche assurdo motivo i glNormal dopo glBegin, utilizzati con i
glEdgeFlag, SOLO se si disegnano quadrilateri, mandano il driver video
in crash, ma SOLO se è successo chissà che cosa prima... Togli gli
edgeflag o metti il glNormal PRIMA del glBegin: tutto funziona...
Per fare una similitudine, è come se tutti gli anni in cui il 3
marzo capita di martedì, il 15 agosto nevicasse all'equatore... MAH