OpenGL in SharpDevelop verwenden

Wie man OpenGL in SharpDevelop mit Hilfe von CsGL verwenden kann
Aus reiner Neugier wollte ich OpenGL mal in C# testen. Schnell bin ich bei einer Google-Suche auf CsGL gestossen, einen Wrapper für OpenGL, aber keines der Beispiele ließ
sich bei mir irgendwie mit meiner Entwicklungsumgebung SharpDevelop kompilieren. Auf der Suche nach einem Tutorial scheiterte ich erbärmlich und las in diversen Foren nur
die Frage, die ich mir selber stellte, allerdings immer ohne Antwort.
Nachdem ich mir also die Nacht um die Ohren geschlagen habe, kommt jetzt hier die Antwort, wie man CsGL in SharpDevelop verwendet:
1. SharpDevelop muss installiert sein (http://www.icsharpcode.net/OpenSource/SD/Default.aspx) und CsGL muss installiert sein (csgl.sourceforge.net/). Beiden liegt eine
recht verständliche Installationsanleitung bei, aber selbst ohne, sollte man keine Probleme haben.
2. SharpDevelop öffnen
3. Datei/Neu/Combine auswählen und eine leere ‚C# Windowsanwendung‘ erzeugen.
4. Nun in dem Projektfenster, das standardmäßig auf der linken Seite ist, mit der rechten Maustaste auf den von Ihnen gewählten Projektnamen klicken (in diesem Fall
5.
6.
7.
‚CsGLTutorial‘).
Wählen Sie Hinzufügen/Neue Datei aus und erzeugen Sie eine neue ‚Leere C# Datei‘ und geben Sie ihr auch gleich einen Namen.
Nun müssen Sie mit der rechten Maustaste (wieder im Projektfenster) auf ‚Referenzen‘ klicken und ‚Referenz hinzufügen‘ auswählen.
Suchen Sie in dem neuen Dialog den Eintrag ‚CsGL‘ und wählen Sie ihn mit einem Doppelklick aus.
8.
Nach erfolgreichem Verlassen des Dialoges mit OK, können Sie jetzt mit dem Programmieren anfangen. Als kleines Beispiel vielleicht hier ein kleiner Code, der ein
grünes Rechteck ausgibt:
using System;
using System.Drawing;
using System.Windows.Forms;
using CsGL.OpenGL;
namespace SimpleOpenGL
{
public class OurView : OpenGLControl
{
public override void glDraw()
{
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
GL.glLoadIdentity();
GL.glTranslatef(0.0f,0.0f, -6);
// viewport = 0 0 0 and 6 deep
GL.glColor3f (0.0f,1.0f,0.0f);
GL.glBegin(GL.GL_TRIANGLES);
// Drawing Using Triangles
GL.glVertex3f( 0.0f, 1.0f, 0.0f);
// Top
GL.glVertex3f(-1.0f,-1.0f, 0.0f);
// Bottom Left
GL.glVertex3f( 1.0f,-1.0f, 0.0f);
GL.glEnd();
}
// Bottom Right
}
protected override void InitGLContext()
{
GL.glShadeModel(GL.GL_SMOOTH);
// Enable Smooth Shading
GL.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
// Black Background
GL.glClearDepth(1.0f);
// Depth Buffer Setup
GL.glEnable(GL.GL_DEPTH_TEST);
// Enables Depth Testing
GL.glDepthFunc(GL.GL_LEQUAL);
// The Type Of Depth Testing To Do
GL.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); // Nice Perspective Calculations
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
Size s = Size;
GL.glMatrixMode(GL.GL_PROJECTION);
GL.glLoadIdentity();
GL.gluPerspective(45.0f, (double)s.Width /(double) s.Height, 0.1f, 100.0f);
GL.glMatrixMode(GL.GL_MODELVIEW);
GL.glLoadIdentity();
}
public class MainForm : System.Windows.Forms.Form
// Will show us the OpenGL window
{
private SimpleOpenGL.OurView view;
public MainForm()
{
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(688, 590);
this.Name = "MainForm";
this.Text = "OpenGL with CsGL using SharpDevelop (by Joachim Rohde aka Marilyn)";
this.view = new SimpleOpenGL.OurView();
this.view.Parent = this;
this.view.Dock = DockStyle.Fill; // Will fill whole form
}
static void Main()
{
Application.Run(new MainForm());
}
9.
}
}
Mit F8 noch kompilieren und F5 ausführen. Fertig.
Zu guter Letzt
Ich hatte bereits anfangs gesagt, dass ich OpenGL in C# nur ausprobieren wollte, deswegen sollte ich vielleicht noch erwähnen, dass das meine erste Windows-Applikation in C#
war. Demnach hat das Beispiel sicherlich noch einige deutliche stilistische Defizite und soll auch nur als Demonstration dienen. Auch sonst kann es sein, dass einige C#
Programmierer das für Selbstverständlich hinnehmen, was ich hier beschrieben habe. Doch dieser Text ist eher für Programmierer wie mich gedacht, die schon OpenGL können
und die sich nicht lange in eine Entwicklungsumgebung einarbeiten wollen, sondern nur kurz was ausprobieren wollen. Der OpenGL-Code ist, wie deutlich erkennbar ist, von
NeHe’s Tutorial.
Jegliches Feedback ist herzlich willkommen. Bei Fragen, Anmerkungen oder auch nur, wenn ihr mit diesem kurzen Artikel was anfangen konntet, schreibt eine E-Mail an:
[email protected]
Webseiten
SharpDevelop - http://www.icsharpcode.net/OpenSource/SD/Default.aspx
CsGL - csgl.sourceforge.net
NeHe’s OpenGL-Tutorials – nehe.gamedev.net
Meine Webseite – www.joachimrohde.de