Dentro il sistema

OpenGL: atto secondo

Jürgen Assfalg
 

logo OpenGL

L'ultimo numero ci siamo lasciati con una panoramica sui programmi che sfruttano le funzioni OpenGL per generare immagini grafiche rappresentanti oggeti tridimensionali. Come già detto, questa è una tecnologia in continuo sviluppo che sta prepotentemente entrando anche nel mercato dell'home computing.

Mi immagino allora che fra di voi, almeno fra i più smanettoni, ci sia qualcuno che voglia provare almeno una volta a scrivere un proprio programmino OpenGL. Non voglio in questa sede entrare nel particolare, sia perché l'argomento è forse un po' troppo specifico per la nostra rivista, sia perché potrete trovare a giro un sacco di documentazione di un livello sicuramente superiore a quello che io saprei offrirvi.

Per cominciare...

Ho già accennato al fatto che la libreria OpenGL è disponibile su più sistemi operativi. Alcuni si chiederanno allora come sia possibile la portabilità, visto che ciascuno di essi sfrutta delle diverse API per la gestione delle finestre (Presentation Manager per OS/2, X-Windows nel mondo Unix, ...). La domanda è lecita e la risposta è dovuta: per ognuno di questi sistemi esistono delle specifiche funzioni che permettono di legare il rendering context della macchina a stati OpenGL allo specifico motore di windowing. Nel caso specifico di OS/2 queste funzioni sono le PGL, per Unix l'estensione GLX e così via per altri SO.

Ci si rende allora conto che, per lo sviluppo di un progetto serio, sono necessarie svariate conoscenze: oltre ad una conoscenza di base nel campo della computer grafica, sarà necessario documentarsi sulle funzioni OpenGL, sul Presentation Manager e sulle funzioni PGL.

Per quanto riguarda le OpenGL, il riferimento d'obbligo è il cosiddetto Redbook che, nell'ultima edizione, analizza dettagliatamente tutte le funzioni della versione 1.1 della libreria:

    Open GL Architecture Revie Board - Mason Woo, Jackie Neider, Tom Davis
    OpenGL programming Guide, 2nd edition
    The Official Guide to Learning OpenGL, Version 1.1
    Addison Wesley Developers Press, 1997
    ISBN 0-201-46138-2

La bibliografia che tratta il Presentation Manager è molto ampia e, oltre alla varia manualistica in formato elettronico che viene fornita il DevCon, consiglio di dare un'occhiata ai corsi di programmazione PM che compaiono sulle varie e-zines (Come faccio? su JustWarp!, oppure su OS/2 e-zine e EDM/2).

Per chi invece si volesse limitare a progetti meno ambiziosi, resta ancora il ricorso a una delle due librerie ausiliarie che rendono completamente trasparente l'interfacciamento al sistema di gestione delle finestre. Non aspettatevi però di poter scrivere con queste programmi con menu, barre di stato e finestre di dialogo!

  • AUX: questa è la libreria che veniva usata per gli esempi nella prima edizione del Redbook; permette una semplice gestione degli eventi del mouse e della tastiera nonché, ovviamente, la creazione di una finestra nella quale eseguire il rendering della scena 3D.
  • GLUT: è stata scritta da Mark Kilgard (SGI) per fornire in maniera semplice e trasparente un'integrazione con il sistema X-Windows. Successivamente è stata portata anche su altri sistemi e costituisce adesso la libreria di riferimento nella seconda edizione del Redbook. La versione che si trova con le OpenGL per OS/2 non è più molto attuale giacché non soddisfa le specifiche della versione 3.3 di GLUT. La libreria presenta inoltre alcuni errori che non ho riscontrato sotto altri sistemi operativi. Ci si aspetta che, con la nuova versione 1.1 delle OpenGL per OS/2, anche la libreria GLUT sia allineata alla più recente 3.5.
screenshot di programma per OpenGL
esempio di programma che sfrutta le librerie OpenGL

La compilazione...

Per chi vuole solo eseguire i programmi che usano la libreria OpenGL, è sufficiente il runtime di cui ho già dato la reperibilità nell'ultimo numero. Chi invece vuole essere più creativo dovrà procurarsi il development kit: in esso si trovano i vari files di include (*.H), nonché qualche esempio con i sorgenti. Tale kit è scricabile presso ftp://ftp.austin.ibm.com/pub/developer/os2/OpenGL/ oppure lo si può trovare sulla Special Edition of Volume 9 of the OS/2 Developer Connection (in parole povere: la beta di Merlin).

Una volta che avete scritto il vostro primo programmino, magari ispirandovi a qualche esempio, non vi resta che invocare il vostro compilatore preferito con le impostazioni del caso. Ovviamente i Makefiles e gli altri files accessori funzionano egregiamente con i compilatori di casa IBM (ad esempio VAC++), mentre per altri prodotti, quali il gcc, dovrete darvi un po' da fare. Per gli utenti di quest'ultimo è necessario trasformare le librerie *.LIB (libtk.lib, opengl.lib, glut.lib e libaux.lib) nel *.a, compatibile con il linker ld, secondo le modalità che questi ben conoscono (o almeno lo spero).

A questo punto dovrebbe essere tutto pronto: a meno di errori nei vostri sorgenti o qualche imprecisione nelle chiamate OpenGL (e vi assicuro che all'inizio succede spesso), dovreste veder girare il vostro primo programma in grafica 3D sotto OS/2.

Per gli insaziabili

Sebbene molti si saranno accontentati di questa rapida panoramica, spero che qualcuno sia rimasto affascinato dalla materia e abbia intenzione di approfondire l'argomento. E allora dove trovare ulteriori informazioni? Qui di seguito riporto un paio di indirizzi dai quali partire:
  • http://www.utsi.com/~kgl/os2-opengl/index.html: a quest'indirizzo potrete trovare una, seppur breve e poco aggiornata, raccolta di FAQ che riguardano lo sviluppo in OpenGL sotto OS/2. Troverete inoltre le istruzioni per aderire ad una mailing list per discutere sullo sviluppo OpenGL sotto OS/2: sostanzialmente quesiti sulle funzioni pgl, ma anche argomenti più generici.
  • il newsgroup comp.graphics.api.opengl
  • un'interessante serie di articoli su EDM/2 a cura di Perry Newhook: dai primi rudimenti allo sviluppo di applicazioni più complesse.
  • qualche altro riferimento lo potrete trovare nella pagina che ho dedicato a OpenGL: http://aguirre.ing.unifi.it/~assfalg/myexp.html; ultimamemente l'ho un po' trascurata, ma conto di rimetterci le mani al più presto.

Ultim'ora

Vorrei inoltre cogliere l'occasione per alcuni aggiornamenti riguardo ad argomenti affrontati la volta scorsa:
  • Nel momento in cui scrivo è disponibile l'ultima beta di OpenGL 1.1 su ftp://ftp.austin.ibm.com/pub/developer/os2/OpenGL/oglpsi.zip; tuttavia, quando leggerete queste righe, dovrebbe già essere uscita la versione definitiva (annunciata per il giorno 1.10.1997).
  • Nel frattempo ha visto la luce anche VRML/2, un browser VRML standalone (che comunque può essere utilizzato anche come helper all'inerno di Netscape) che potrete trovare presso http://www.interlog.com/~lmcrae/. Ad una prima occhiata mi sembra un buon programma, anche se taluni vorrebbero già il supporto per il VRML 2.0: si consideri però che per una sola persona questo vuol dire un sacco di lavoro (le specifiche della versione 2.0 sono almeno 5 volte più voluminose di quelle della precedente 1.0).

Con questo concludo la breve carrellata su OpenGL, restando comunque a vostra disposizione per eventuali chiarimenti.


[Pagina precedente] [Sommario] [Pagina successiva]