Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Порядок проведения работы. Запустив Microsoft Visual Studio, нужно создать новый проект на языке C#



Запустив Microsoft Visual Studio, нужно создать новый проект на языке C#. В качестве типа проекта (Project types) выбрать Windows, в качестве шаблона (Templates) – Windows Forms Application. В качестве имени (Name) проекта можно взять «Tao-OpenGL-Initialization-Test». Назовите главное окно «Тест инициализации OpenGL в С#.NET». (Свойства окна, параметр Text).

После завершения генерации проекта нужно открыть Обозреватель решений (View\Solution Explorer) (рис. 1.18), открыть список ссылок (References). В контекстном меню для этого списка выберите добавление ссылок (AddReferences), как показано на рис. 1.18.

Рис. 1.18

В открывшемся окне «Добавить ссылку», перейдите к закладке Обзор. После этого перейдите к директории, в которую была установлена библиотека Tao Framework (по умолчанию – «C:\Program Files\Tao Framework»). Необходимые библиотеки хранятся в папке bin. Выделите в папке bin три библиотеки, как показано на рис. 1.19:

- Tao.OpenGL.dll - отвечает за реализацию библиотеки OpenGL

- Tao.FreeGlut.dll - отвечает за реализацию функций библиотеки Glut. Мы будем ее использовать для инициализации рендера, а так же для различных других целей.

- Tao.Platform.Windows.dll - отвечает за поддержку элементов для визуализации непосредственно на платформе Windows.

Ссылки на перечисленные библиотеки должны добавиться в список References обозревателя решений.

Рис. 1.19

Для работы с выбранными библиотеками в исходном тексте окна нужно подключить соответствующие пространства имен, как показано ниже.

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;

using Tao.OpenGl; // для работы с библиотекой OpenGL
using Tao.FreeGlut; // для работы с библиотекой FreeGLUT
// для работы с элементом управления SimpleOpenGLControl
using Tao.Platform.Windows;

Далее вернитесь к конструктору диалогового окна и перейдите к окну Toolbox (панель элементов). Щелкнув правой кнопкой на вкладке Общие (General), в раскрывшемся контекстном меню выберите пункт «Выбрать элементы» (Choose Items), рис. 1.20.

Рис. 1.20.

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

Рис. 1.21

Данный элемент станет доступным для размещения на форме приложения. Перетащите его на форму, и разместите так, как показано на рис. 1.22. Справа от размещенного элемента установите также две кнопки – Визуализация и Выход.

Рис. 1.22

Теперь выделите элемент SimpleOpenGlControl1, расположенный на форме и перейдите к его свойствам. Измените параметр name на значение «AnT». Далее элемент SimpleOpenGlControl будем называть AnT (рис. 1.23).

Рис. 1.23

Теперь необходимо инициализировать работу OpenGl. Сначала в конструкторе класса нужно инициализировать работу элемента AnT:

public Form1()

{

InitializeComponent();

AnT.InitializeContexts();

}

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

private void Form1_Load(object sender, EventArgs e)

{

// инициализация Glut

Glut.glutInit();

Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);

// очистка окна

Gl.glClearColor(1, 1, 1, 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);

}

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

Функция Glut.glutInitDisplayMode устанавливает режим отображения. В нашем случае устанавливается RGB режим для визуализации (GLUT_RGB – это псевдоним GLUT_RGBA, он устанавливает режим RGBA битовой маски окна). Значение Glut.GLUT_DOUBLE устанавливает двойную буферизацию окна. Двойная буферизация, как правило, используется для устранения мерцания, возникающего в процессе быстрой перерисовки кадров несколько раз подряд. GLUT_DEPTH указывает при инициализации окна, если в приложении будет использоваться буфер глубины.

На окне мы создали две кнопки. Обработчик кнопки Выход будет выглядеть следующим образом

//обработчик кнопки «Выход»
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.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(); // перерисовка кадра изображения

}

Откомпилируйте и запустите приложение. Если оно не содержит ошибок, то после нажатия на кнопку Визуализация результат должен быть аналогичен показанному на рис. 1.24.

Рис. 1.24.





Дата публикования: 2015-04-07; Прочитано: 433 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...