4.4 Инициализация OpenGL в C#. Тестирование визуализации 3D сферы.

Инициализация OpenGL в C#. Подключение библиотеки Tao и визуализация графики с ее помощью

Важные темы, рассматриваемые в данной части главы:
  1. Создание проекта и подключение библиотеки Tao OpenGL в С#
  2. Инициализация OpenGL в C# .NET
Дополнительно:

Скопируйте файлы из директории
C:\Programm Files\TaoFramework\lib 
в папку
C:\Windows\System32

Итак, сейчас мы на основе тестового приложения проверим работоспособность библиотеки Tao: сначала мы подключим ее к проекту, затем проведем инициализацию библиотеки и инициализацию OpenGL и в качестве проверки визуализируем сферу с помощью библиотеки FreeGlut.

В данной главе мы не будем вдаваться в подробности настройки и инициализации OpenGL в C# - мы лишь проверим работоспособность и научимся размещать специальный элемент управления, предназначенный для визуализации сцены в окне программы.

Создание проекта и подключение библиотеки Tao OpenGL в С#


Сначала создайте новый проект, в качестве шаблона установив приложение Windows Forms. Назовите его Tao-OpenGL-Initialization-Test.

Дождитесь пока MS Visual Studio закончит генерацию кода шаблона. Теперь перейдите к окну Solution Explorer (Обозреватель решений). Здесь нас интересует узел Links, который отображает связи с библиотеками, необходимыми для работы нашего приложения (рис. 1).
Уроки OpenGL + C#: Узел "ссылки", необходимый для подключения, который необходимо выбрать для подключения библиотек Рисунок 1. Узел "ссылки", необходимый для подключения, который необходимо выбрать для подключения библиотек.
Назовите главное окно «Тестирование инициализации OpenGL в С# .NET». (Свойства окна -> параметр Text).

Щелкните по этому узлу правой клавишей мыши, после чего в открывшемся контекстном меню выберите «Добавить ссылку» (“Add Link”), как показано на рисунке 2.
Уроки OpenGL + C#: Процесс добавления новой ссылки Рисунок 2. Процесс добавления новой ссылки.
В открывшемся окне «Добавить ссылку» перейдите к закладке «Обзор». После этого перейдите к директории, в которую была установлена библиотека Tao Framework. (По умолчанию – "C:\Program Files\Tao Framework").

Нам потребуется папка bin – в ней хранятся необходимые нам библиотеки. Перейдите в папку bin и выберите 3 библиотеки, как показано на рисунке 3:
  1. Tao.OpenGL.dll - отвечает за реализация библиотеки OpenGL.
  2. Tao.FreeGlut.dll - отвечает за реализацию функций библиотеки Glut. Мы будем ее использовать для инициализации рендера , а так же для различных других целей.
  3. Tao.Platform.Windows.dll - отвечает за поддержку элементов непосредственно для визуализации на платформе Windows.
Уроки OpenGL + C#: Процесс добавления библиотек Tao.OpenGL, Tao.FreeGLUT и Tao.Platform.Windows Рисунок 3. Процесс добавления библиотек Tao.OpenGL, Tao.FreeGLUT и Tao.Platform.Windows.
На рисунке 4 мы видим все добавившиеся библиотеки в узле «Ссылки» (Links).
Уроки OpenGL + C#: Добавление элемента на панель инструментов - в последствии мы разместим добавляемый элемент на форме и в нем будет реализовываться визуализация Рисунок 4. Добавление элемента на панель инструментов - в последствии мы разместим добавляемый элемент на форме и в нем будет реализовываться визуализация.
Теперь перейдите к исходному коду окна. Для работы с нашими библиотеками нам необходимо подключить соответствующие пространства имен:
/*http://esate.ru, Anvi*/

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), как показано на рисунке 5.
Уроки OpenGL + C#: Выбор опции добавления элемента Рисунок 5. Выбор опции добавления элемента.
В открывшемся окне найдите элемент SimpleOpenGLControl и установите возле него галочку, как показано на рисунке 6. Затем нажмите ОК.
Уроки OpenGL + C#: Подключения к панели элементов SimpleOpenGLControl, предназначенного для визуализации графики в окне Рисунок 6. Подключения к панели элементов SimpleOpenGLControl, предназначенного для визуализации графики в окне.
Теперь данный элемент станет доступным для размещения на форме приложения. Перетащите элемент на форму и разместите так, как показано на рисунке 7. Справа от размещенного элемента установите 2 кнопки – «Визуализировать» и «Выйти».
Уроки OpenGL + C#: Расположение элементов на форме Рисунок 7. Расположение элементов на форме.
Теперь выделите элемент simpleOpenGlControl1, расположенный на форме, и перейдите к его свойствам. Измените параметр name на значение "AnT". Далее во всех главах элементы simpleOpenGlControl мы будем называть AnT (рис. 8).
Уроки OpenGL + C#: Переименовывание элемента Рисунок 8. Переименовывание элемента.

Инициализация OpenGL в C# .NET


Теперь нам необходимо инициализировать работу OpenGl.

Сначала мы в конструкторе класса должны инициализировать работу элемента AnT:
/*http://esate.ru, Anvi*/

public Form1() 
{ 

  InitializeComponent(); 
  AnT.InitializeContexts();

} 


Снова перейдите к конструктору и сделайте двойной щелчок левой клавишей мыши на форме – создастся функция обработчик события загрузки формы.

В ней мы поместим код инициализации OpenGl. Подробное описание того, что делает этот код, мы рассмотрим в следующих главах, а сейчас мы только протестируем работу библиотек OpenGL и FreeGLUT.
/*http://esate.ru, Anvi*/


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); 


} 


На окне мы создали 2 кнопки. Обработчик кнопки выйти будет выглядеть следующим образом:
/*http://esate.ru, Anvi*/

//обработчик кнопки "выйти" 
private void button2_Click(object sender, EventArgs e) 
{ 

  Application.Exit();

}


Обработчик кнопки «Визуализировать» будет содержать код, реализующий визуализацию сеточного каркаса сферы (за отрисовки трехмерной сферы будет отвечать библиотека FreeGLUT). Код, который будет размещен в данной функции, отвечает за разные технические аспекты визуализации, с которыми мы познакомимся в следующих главах.

Код функции:
/*http://esate.ru, Anvi*/

// обработчик кнопки "визуализировать" 
private void button1_Click(object sender, EventArgs e) 
{ 

  Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); 

  Gl.glLoadIdentity(); 
  Gl.glColor3f(1.0f, 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();

} 


Откомпилируйте и запустите приложение.

Результат работы приложения показан на рисунке 9. Если вы правильно набрали все исходные коды и выполнили все описанные действия, то вы увидите аналогичную визуализацию сферы после нажатия на кнопке «Визуализировать».
Уроки OpenGL + C#: Приложение готово: OpenGL подключен и инициализирован Рисунок 9. Приложение готово: OpenGL подключен и инициализирован. Пример визаулизации при нажатии на кнопку "Визуализировать".
Вот и все. Мы протестировали работоспособность библиотеки Tao, инициализировав библиотеку OpenGL в C# .NET.

В следующей главе мы познакомимся с инициализацией OpenGL в режиме двухмерной проекции, а также начнем учиться визуализации различных примитивов, напишем приложение, реализующее рисование графиков функции, познакомимся с работой с цветом и поуправляем разложением спектра цветов на треугольнике.

Примечание


Если у вас возникли проблемы с запуском приложений, обратите внимание на следующие нюансы:

Если вы используете ОС x64, первым делом попробуйте изменить тип проекта на x86. (Указать в Visual Studio).

Сергей Солонько: «System.DllNotFoundException: Не удается загрузить DLL „freeglut.dll“: Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E) — решается методом копирования из папки C:\Programm Files\TaoFramework\lib в папку C:\Windows\System32.»

Clandestin: «У меня в Windows 7 копирование в C:\Windows\System32 не помогло. Зато помогло копирование непосредственно в папку C:\Windows.»

KsenoByte: «Предлагаю всем решение проблемы с SimpleOpenGLControl в Visual Studio 2010.

Для того чтобы добавить в Панель Элементов (Toolbox) элемент SimpleOpenGLControl, необходимо следующее:

1. Нажимаем правой кнопкой по вкладке «Общие» в Панели Элементов и выбираем «Выбор Элементов» (за тавтологию нижайше извиняюсь).

Уроки OpenGL + C#: Панель элементов -> Выбор элементов Рисунок 1. Панель элементов -> Выбор элементов.
2. В открывшемся окне обнаруживаем отсутствие SimpleOpenGLControl.

3. Нажимаем кнопку «Обзор» и находим файл библиотеки C:\Program Files\TaoFramework\bin\Tao.Platform.Windows.dll.

4. Добавляем.

5. Наслаждаемся результатом.
»
Уроки OpenGL + C#: Решение проблемы с SimpleOpenGLControl Рисунок 2. Решение проблемы с SimpleOpenGLControl.
Прикрепленные файлы для скачивания:

Нет доступа к просмотру комментариев.

^