OpenGL in .NET
There is a very simple way how to use OpenGL library in .NET application using C#. The library what you need can be downloaded here csgl.sourceforge.net. The simplest way is to add these downloaded files to your project:
csgl.dllcsgl.native.dll
Create a new Windows application project. In the new solution add a new project Class library named
GLViewControl. Add csgl.dll and csgl.native.dll to the GLViewControl project and reference csgl.dll library. Reference also System.Windows.Forms and System.Drawing.Set the "Copy to output directory" property for
csgl.native.dll file. Presence of this file in the output directory is important unless you have to install csgl on each system particularly.Now the project is ready for our code. Add a new class in
GLViewControl:using System;
using CsGL.OpenGL;
namespace GLViewControl
{
public class GLView : OpenGLControl
{
public override void glDraw()
{
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);// Clear the Screen and the Depth Buffer
GL.glMatrixMode(GL.GL_MODELVIEW); // Modelview Matrix
GL.glLoadIdentity(); // reset the current modelview matrix
GL.glTranslatef(0.0f, 0.0f, -4.0f);
GL.glBegin(GL.GL_POLYGON);
GL.glColor3d(0, 0, 1);
GL.glVertex3f(-1, -1, 0);
GL.glColor3d(0, 1, 0);
GL.glVertex3f(1, -1, 0);
GL.glColor3d(1, 0, 0);
GL.glVertex3f(0, 1, 0);
GL.glEnd();
}
protected override void InitGLContext()
{
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); // type of depth testing
GL.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); // nice perspective calculations
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
GL.glMatrixMode(GL.GL_PROJECTION);
GL.glLoadIdentity();
GL.gluPerspective(45.0f, (double)Size.Width / (double)Size.Height, 0.1f, 100.0f);
GL.glMatrixMode(GL.GL_MODELVIEW);
GL.glLoadIdentity();
}
}
}
And now just drag and drop a new
GLView control from the toolbox in VS on your form and run the application. The result looks like this:
0 komentářů:
Post a Comment