Сначала необходимо установить одну из библиотек для работы с OpenGl, так как работать из c# с WinAPI не очень удобно, особенно если дело касается импорта структур. Для примера я использую библиотеку Tao www.taoframework.com
Сначала создайте новый проект, в качестве шаблона установив приложение Windows Forms. Назовите его «Tao-OpenGL».
Дождитесь пока MS Visual Studio закончит генерацию кода шаблона. Теперь перейдите к окну Solution Explorer (Обозреватель решений). Здесь, нас интересует узел Links, который отображает связи с библиотеками, необходимыми для работы нашего приложения (рисунок).

Щелкните по этому узлу правой клавишей мыши, после чего, в открывшемся контекстном меню выберите «Добавить ссылку» (“Add Link”), как показано на следующем рисунке.

В открывшемся окне «Добавить ссылку», перейдите к закладке обзор. После этого перейдите к директории, в которую была установлена библиотека Tao Framework. (По умолчанию – “C:\\Program Files\Tao Framework”).
Нам потребуется папка bin – в ней хранятся необходимые нам библиотеки. Перейдите в папку bin и выберите 3 библиотеки, как показано на рисунке.
Процесс добавления библиотек Tao.OpenGL,Tao.FreeGLUT и Tao.Platform.Windows для последующей инициализации и работы с OpenGL в C#:

Теперь перейдите к исходному коду окна. Для работы с нашими библиотеками, нам необходимо подключить соответствующие пространства имен:
Теперь вернитесь к конструктору диалогового окна и перейдите к окну Toolbox (панель элементов). Щелкните правой кнопкой на вкладке «Общие», и в раскрывшемся контекстном меню выберите пункт «Выбрать элементы» (Select elements), как показано на рисунке.
Выбор опции добавления элемента:

В открывшемся окне найдите элемент SimpleOpenGLControl и установите возле него галочку, как показано на рисунке. Затем нажмите ОК.

Теперь данный элемент станет доступным для размещения на форме приложения. Перетащите элемент на форму, и разместите так, как показано на рисунке. Справа от размещенного элемента установите 2 кнопки – «Визуализировать» и «Выйти».

Теперь выделите элемент simpleOpenGlControl1, расположенный на форме и перейдите к его свойствам. Измените значение параметра name на «anT».
Теперь нам необходимо инициализировать работу OpenGl.
Сначала мы в конструкторе класса должны инициализировать работу элемента anT:
Снова перейдите к конструктору и сделайте двойной щелчок левой клавишей мыши на форме – создастся функция обработчик события загрузки формы. В ней мы поместим код инициализации OpenGl. Cейчас мы протестируем работу библиотек OpenGL и FreeGLUT.
На окне мы создали 2 кнопки. Обработчик кнопки выйти будет выглядеть следующим образом
Обработчик кнопки «Визуализировать» будет содержать код, реализующий визуализацию сеточного каркаса сферы, (за отрисовки трехмерной сферы будет отвечать библиотека FreeGLUT). Код, который будет размещен в данной функции, отвечает за разные технические аспекты визуализации.
Код функции:
Откомпилируйте и запустите приложение.
Результат работы приложения вы увидите после нажатия кнопки «визуализировать». Если вы правильно набрали все исходные коды и выполнили все описанные действия, то вы увидите визуализацию сферы.
Мы протестировали работоспособность библиотеки Tao, инициализировав библиотеку OpenGL в C# .NET.
Создание проекта и подключение библиотеки Tao OpenGL в С#.
Сначала создайте новый проект, в качестве шаблона установив приложение Windows Forms. Назовите его «Tao-OpenGL».
Дождитесь пока MS Visual Studio закончит генерацию кода шаблона. Теперь перейдите к окну Solution Explorer (Обозреватель решений). Здесь, нас интересует узел Links, который отображает связи с библиотеками, необходимыми для работы нашего приложения (рисунок).

Щелкните по этому узлу правой клавишей мыши, после чего, в открывшемся контекстном меню выберите «Добавить ссылку» (“Add Link”), как показано на следующем рисунке.

В открывшемся окне «Добавить ссылку», перейдите к закладке обзор. После этого перейдите к директории, в которую была установлена библиотека Tao Framework. (По умолчанию – “C:\\Program Files\Tao Framework”).
Нам потребуется папка bin – в ней хранятся необходимые нам библиотеки. Перейдите в папку bin и выберите 3 библиотеки, как показано на рисунке.
- Tao.OpenGL.dll — отвечает за реализация библиотеки OpenGL
- Tao.FreeGlut.dll — отвечает за реализацию функций библиоеки Glut. Мы будем ее использовать для инициализации рендера, а так же для различных других целей.
- Tao.Platform.Windows.dll — отвечает за поддержку элементов непосредственно для визуализации непосредственно на платформе Windows.
Процесс добавления библиотек Tao.OpenGL,Tao.FreeGLUT и Tao.Platform.Windows для последующей инициализации и работы с OpenGL в C#:

Теперь перейдите к исходному коду окна. Для работы с нашими библиотеками, нам необходимо подключить соответствующие пространства имен:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
// для работы с библиотекой OpenGL
using Tao.OpenGl;
// для работы с библиотекой FreeGLUT
using Tao.FreeGlut;
// для работы с элементом управления SimpleOpenGLControl
using Tao.Platform.Windows;
Теперь вернитесь к конструктору диалогового окна и перейдите к окну Toolbox (панель элементов). Щелкните правой кнопкой на вкладке «Общие», и в раскрывшемся контекстном меню выберите пункт «Выбрать элементы» (Select elements), как показано на рисунке.
Выбор опции добавления элемента:

В открывшемся окне найдите элемент SimpleOpenGLControl и установите возле него галочку, как показано на рисунке. Затем нажмите ОК.

Теперь данный элемент станет доступным для размещения на форме приложения. Перетащите элемент на форму, и разместите так, как показано на рисунке. Справа от размещенного элемента установите 2 кнопки – «Визуализировать» и «Выйти».

Теперь выделите элемент simpleOpenGlControl1, расположенный на форме и перейдите к его свойствам. Измените значение параметра name на «anT».
Инициализация OpenGL в C# .NET .
Теперь нам необходимо инициализировать работу OpenGl.
Сначала мы в конструкторе класса должны инициализировать работу элемента anT:
public Form1()
{
InitializeComponent();
anT.InitializeContexts();
}
Снова перейдите к конструктору и сделайте двойной щелчок левой клавишей мыши на форме – создастся функция обработчик события загрузки формы. В ней мы поместим код инициализации OpenGl. Cейчас мы протестируем работу библиотек OpenGL и FreeGLUT.
private void Form1_Load(object sender, EventArgs e)
{
// инициализация Glut
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
// очитка окна
Gl.glClearColor(255, 255, 255, 1);
// установка порта вывода в соотвествии с размерами элемента anT
Gl.glViewport(0, 0, anT.Width, anT.Height);
// настройка проекции
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Glu.gluPerspective(45, (float)anT.Width / (float)anT.Height, 0.1, 200);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
// настройка параметров OpenGL для визуализации
Gl.glEnable(Gl.GL_DEPTH_TEST);
Gl.glEnable(Gl.GL_LIGHTING);
Gl.glEnable(Gl.GL_LIGHT0);
}
На окне мы создали 2 кнопки. Обработчик кнопки выйти будет выглядеть следующим образом
//обработчик кнопки "выйти"
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
Обработчик кнопки «Визуализировать» будет содержать код, реализующий визуализацию сеточного каркаса сферы, (за отрисовки трехмерной сферы будет отвечать библиотека FreeGLUT). Код, который будет размещен в данной функции, отвечает за разные технические аспекты визуализации.
Код функции:
// обработчик кнопки "визуализировать"
private void button1_Click(object sender, EventArgs e)
{
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glLoadIdentity();
Gl.glColor3i(255, 0, 0);
Gl.glPushMatrix();
Gl.glTranslated(0,0,-6);
Gl.glRotated(45, 1, 1, 0);
// рисуем сферу с помощью библиотеки FreeGLUT
Glut.glutWireSphere(2, 32, 32);
Gl.glPopMatrix();
Gl.glFlush();
anT.Invalidate();
}
Откомпилируйте и запустите приложение.
Результат работы приложения вы увидите после нажатия кнопки «визуализировать». Если вы правильно набрали все исходные коды и выполнили все описанные действия, то вы увидите визуализацию сферы.
Вот и все.
Мы протестировали работоспособность библиотеки Tao, инициализировав библиотеку OpenGL в C# .NET.