Библиотека трехмерной графики Open gl



страница4/20
Дата25.11.2012
Размер1.49 Mb.
ТипДокументы
1   2   3   4   5   6   7   8   9   ...   20

Класс команд OpenGL. Очистка буфера цвета


В этом разделе

  • Создается класс команд OpenGL, методы которого будут служить оболочками процедур и функций библиотеки OpenGL.

  • Применяются команды очистки буфера цвета ClearColor и Clear.


Панель имеет черный цвет, так как по умолчанию цвет всех пикселей в буфере цвета черный – все биты буфера равны нулю. Команды OpenGL позволяют устанавливать произвольный цвет заполнения буфера цвета. Это цвет очистки сцены, или фон изображения.

Откройте библиотеку классов GL и опишите новый статический класс с именем gl, в который будут помещаться методы, отвечающие командам OpenGL. Поместите в класс gl члены, регулирующие цвет заполнения буфера цвета. Эти члены будут объединены областью, названной "Очистка буферов". Описание класса gl примет вид

public static class gl

{

#region Очистка буферов

///

/// Определяет значения цветов в буферах цвета.

/// По умолчанию все 4 составляющих цвета равны нулю

///


///


/// количество красного от 0 до 1

///


///


/// количество зеленого от 0 до 1

///


///


/// количество синего от 0 до 1

///


///


/// количество альфа-компоненты от 0 до 1, участвующей в определении эффекта прозрачности

///


[DllImport("OPENGL32.DLL", EntryPoint = "glClearColor")]

public static extern void ClearColor(float red, float green, float blue, float alpha);

///

/// Идентифицирует буфер цвета в методах Clear и PushAttrib.

///


public const int COLOR_BUFFER_BIT = 0x00004000;

///

/// Очищает буферы внутри порта вывода изображения

///


///


/// Выражение, идентифицирующее буферы, которые должны быть очищены.

/// Четыре маски COLOR_BUFFER_BIT, DEPTH_BUFFER_BIT,

/// ACCUM_BUFFER_BIT и STENCIL_BUFFER_BIT могут быть связаны оператором | (или)

///


[DllImport("OPENGL32.DLL", EntryPoint = "glClear")]

public static extern void Clear(int mask);

#endregion

}

Везде в дальнейшем методы и постоянные, относящиеся к командам OpenGL, будут размещаться в этом классе

В классе формы f3D опишите постоянную цвета, которым будет очищаться буфер цвета

#region Constants

///

/// Хранит цвет фона - цвет очистки буфера цвета (темно-синий)

///


static Color clearColor = Color.FromArgb(0, 0, 51);

#endregion

Опишите так же два новых метода InitGL и BuildFrame.
Метод InitGL поместите в раздел "Ctr" следом за описанием конструктора и в него поместите вызов метода, который устанавливает цвет очистки сцены, ее фон

///

/// Инициализирует некоторые атрибуты OpenGL.

///


void InitGL()

{

// Цвет фона темно синий

gl.ClearColor((float)clearColor.R / 255, (float)clearColor.G / 255,

(float)clearColor.B / 255, (float)clearColor.A / 255);

}

Метод BuildFrame будет воспроизводить команды OpenGL, формирующие изображение. Добавьте описание метода BuildFrame к разделу "Методы воспроизведения". Поместите в него команду очистки буфера цвета

///

/// Устанавливает воспроизводимую сцену с помощью команд OpenGL

///


void BuildFrame()

{

// Очистка буферов

gl.Clear(gl.COLOR_BUFFER_BIT);

}

В тело конструктора формы f3D после создания объекта класса glPort добавьте оператор вызова метода InitGL так, что тело конструктора примет вид

public f3D()

{

InitializeComponent();

// Операторы, делающие форму квадратной со стороной side,

// равной минимальной стороне дисплея.

// Класс Screen представляет дисплей или несколько дисплеев.

// Статическое свойство PrimaryScreen класса Screen возвращает главный дисплей

// Свойство Bounds возвращает прямоугольник границ дисплея

int side = Math.Min(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

Size = new Size(side, side);

port = new glPort(panelGL);

InitGL();

}

В тело метода RenderFrame() перед командой обмена буферов SwapBuffers добавьте вызов метода BuildFrame() так, что тело метод RenderFrame() примет вид

void RenderFrame()

{

BuildFrame();

if (!port.SwapBuffers())

throw new Exception("Не выполнен обмен буферов.");

}

Убедитесь, что после этой редакции панель стала темно синей. Пройдите пошагово код проекта, уяснив последовательность выполнения операторов.
Тест рубежного контроля

  1. Для чего служит описанный класс gl?

  2. Какой метод определяет цвет фона изображения?

  3. Какой метод очищает буфер цвета, заполняя его заданным фоном?

  4. В какой последовательности следует использовать методы ClearColor, Clear, SwapBuffers?
1   2   3   4   5   6   7   8   9   ...   20

Похожие:

Библиотека трехмерной графики Open gl iconВидеоадаптеры. Архитектурные особенности и технические характеристики
Именно за это время разработчики специализированных процессоров, ориентированных на обработку и ускорение трехмерной графики, успевают...
Библиотека трехмерной графики Open gl iconМетодические указания по выполнению лабораторных работ по дисциплине «Компьютерная графика»
Особый акцент делается на практическое применение изучаемых алгоритмов. Также особое внимание уделяется современным алгоритмам обработки...
Библиотека трехмерной графики Open gl iconВиртуальная реальность
Этот эффект является специфическим отличием от обычных систем трехмерной графики широко доступных на персональных компьютерах. Недолгое...
Библиотека трехмерной графики Open gl icon1. Мультимедиа технологии в туристическом бизнесе
При наличии устройств мультимедиа, компьютер можно использовать в качестве кино-, видеопроектора или проектора двух- или трехмерной...
Библиотека трехмерной графики Open gl iconOpenGL: Основы. (Часть 1)
Многие графические пакеты используют Opengl для вывода трёхмерной графики. Многие известные игры, такие как Quake, Serious Sam и...
Библиотека трехмерной графики Open gl iconПрограмма для создания и обработки растровой графики с частичной поддержкой векторной графики
Использование свободного программного обеспечения при изучении компьютерной графики в школе
Библиотека трехмерной графики Open gl iconГрафики и мультимедиа
Баяковский Ю. М., Игнатенко А. В., Фролов А. И. Графическая библиотека OpenGL. Учебно-методическое пособие
Библиотека трехмерной графики Open gl iconГрафики и мультимедиа
Баяковский Ю. М., Игнатенко А. В., Фролов А. И. Графическая библиотека OpenGL. Учебно-методическое пособие
Библиотека трехмерной графики Open gl iconФункции и графики в экзаменационных заданиях при подготовки к гиа
Цель: повторить, обобщить пройденный материал по теме «Функции и графики для решения заданий», «Кусочные графики», «Графические задания...
Библиотека трехмерной графики Open gl iconУстановка системы Библиотека х с компакт-диска
Если режим автозапуска отключен, то Вы должны сами запустить программу установки. Для этого нажмите кнопку Пуск(Start) и выберите...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org