Una Libreria OpenGL per il Linguaggio C#

Le librerie grafiche OpenGL sono molto conosciute dai programmatori perché semplici da utilizzare e soprattutto consentono di creare applicazioni tridimensionali multi-piattaforma al contrario delle librerie DirectX di Microsoft di qualche anno fa. Dall’uscita della piattaforma .NET la programmazione con le librerie DirectX poteva avvenire non solo con il linguaggio C/C++, ma anche con Visual Basic, C# ed altri. Anche in questo caso gli applicativi grafici sono multi-piattaforma basati su .NET. Ora con il linguaggio C# è possibile programmare anche le OpenGL grazie alla libreria SharpGL for C#.
SharpGL for C# è un progetto per utilizzare le librerie OpenGL con questo linguaggio di programmazione molto apprezzato. Sono state create anche delle estensioni per il Visual Studio, in modo da poter creare facilmente dei progetti Windows Form o WPF. Con questa libreria, che potete scaricare a questo indirizzo ( dopo registrazione credo ), avete anche degli esempi molto semplici per capire il suo funzionamento di base.
SharpGL for C# è una collezione di librerie di classi che permette di utilizzare le OpenGL, ecco i principali oggetti:

  • SharpGL è l’oggetto principale che esporta tutte le funzionalità della libreria
  • SharpGL.SceneGraph consente di gestire gli oggetti e le scene con materiali, textures, luci, shaders ed altro
  • SharpGL.WinForms contiene i controlli delle Windows Forms
  • SharpGL.WPF contiene i controlli per la libreria WPF ( Windows Presentation Foundation )
  • SharpGL.Serialization contenente le classi per la serializzazione, quindi caricare e salvare, di file creati ad esempio con 3D Studio Max

L’uso di SharpGL for C# può avvenire attraverso l’uso delle classiche funzioni di OpenGL oppure attraverso l’oggetto SceneGraph. Adattare il codice esistente è infatti un’operazione semplice da fare, mettiamo di avere questo codice:

//  Set the line width and point size.
glLineWidth(3.0f);
glPointSize(2.0f);

questo deve essere scritto come:

//  Get a reference to the OpenGL object.
OpenGL gl = openGLCtrl1.OpenGL;

//  Set the line width and point size.
gl.LineWidth(3.0f);
gl.PointSize(2.0f);

infatti ogni funzione di OpenGL che inizia per “gl” 0 “glu” ha una funzione membro nell’oggetto SharpGL.OpenGL senza “gl” o “glu”.
Ho dato solo alcune informazioni preliminari su questo progetto, ottimo per coloro i quali non conoscono il C/C++, perché lo trovo molto semplice da utilizzare. Provate per esempio a creare dei progetti con il Visual Studio e portare i semplici esempi, che abbiamo affrontato su questo blog qualche tempo fa, alla piattaforma.

Di Giampaolo Rossi

Sviluppatore software da oltre 16 anni.