Графическая библиотека OpenGl

МИНИСТЕРСТВО ОБРАЗОВАНИЯ УКРАИНЫ

Бердичевский политехнический колледж

контрольная работа

по предмету "Компьютерная графика"

(Вариант №12)

выполнил:

студент группы ПЗС-504

Побережный Д.В ..

проверил

преподаватель:

Козик В.Ю.

м. Бердичев

2007

1. Кривая Без "является

Этот алгоритм позволяет вычислить координаты (x, y) точки кривой Безье по значению параметра t.

1. Каждая сторона контура многоугольника, проходит по точкам-ориентирам, делится пропорционально значению t.

2. Точки разделения соединяются отрезками прямых и образуют новый многоугольник. Количество узлов нового контура на единицу меньше, чем количество узлов предварительного контура.

3. Стороны нового контура снова делятся пропорционально значению t. И так далее. Это продолжается до тех пор, пока не будет получено единую точку деления. И точка и будет точкой кривой Безье (рис. 3.9).

Приведем запись геометрического алгоритма на языке C ++:

Приведем запись геометрического алгоритма на языке C ++:

результат работы алгоритма - координаты одной точки кривой Безье - записываются в R [0].

результат   работы   алгоритма - координаты одной точки кривой Безье - записываются в R [0]

Фигурой здесь будем считать плоский геометрический объект, состоящий из линий контура и точек, находящиеся внутри контура. Контуров может быть несколько - например, когда объект имеет внутри полости (рис. 3.10). В некоторых графических системах одним объектом может считаться и более сложная многоконтурная фигура - совокупность островов с полостями.

В некоторых графических системах одним объектом может считаться и более сложная многоконтурная фигура - совокупность островов с полостями

Графический вывод фигур делится на две задачи: вывод контура и вывод точек заполнения. Так контур представляет собой линию, то вывод контура производится на основе алгоритмов вывода линий. В зависимости от сложности контура, это могут быть отрезки прямых, кривых или произвольная последовательность соседних пикселей.

Для вывода точек заполнения известные методы, которые разделяются в зависимости от использования контура на два типа: алгоритмы закрашивания от внутренней точки до границ произвольного контура и алгоритмы, использующие математический описание контура.

2. Графическая библиотека OpenGl

OpenGL - это "программный интерфейс для аппаратуры, которая создает графику" [88]. Этот интерфейс сделан в виде библиотеки функций (Open Graphic Library - OpenGL). Разработчик - фирма Silicon Graphics.

OpenGL стала индустриальным стандартом Она поддерживается многими операционными системами для различных аппаратных платформ - от персональных компьютеров до сверхмощных суперкомпьютеров. Библиотека OpenGL позволяет достаточно просто создавать быстродействующие графические программы, которые используют аппаратные возможности ЗD-акселераторов. Поэтому она часто используется разработчиками компьютерных игр (например, Quake) и систем трехмерного моделирования . В операционной системе Windows библиотека OpenGL (версии 1.1) поддержана, начиная с Windows 95 версии OSR 2 - были добавлены соответствующие модули DLL, а также включены несколько функций и структур данных в АРЕ Win32.

Первая версия OpenGL увидела свет в 1992 году. Расширение OpenGL воплощались в версиях 1.1-1.5. Сейчас на повестке дня внедрение OpenGL версии 2. Эта версия будет обеспечивать использование всех возможностей графических процессоров , В том числе полную поддержку шейдеров.

Разработка графических программ OpenGL для среды Windows подобная программированию графики GDI функций АРЕ, что мы рассмотрели в главах 7-10. Однако есть особенности, некоторые из которых мы изучим. Для получения более подробных сведений можно порекомендовать следующие литературные источники, как справочники для систем программирования для АРЕ Win32 [86, 87].

Относительно литературы. Несмотря на то, что издано много разнообразной литературы по OpenGL, в том числе и кириллицей, советуем вам всегда пытаться читать первоисточники (это касается любой темы). Для OpenGL таким источником является знаменитая "Red Book" от Silicon Graphics.

Быстродействие графических программ, использующих OpenGL, существенно зависит от видеоадаптера. Аппаратная реализация всех базовых функций OpenGL - гарантия высокого быстродействия. В настоящее время многие видеоадаптеров содержат специальный графический процессор (Один или несколько) для поддержки функции графики. Кроме того , Что видеоадаптер должен аппаратно выполнять все базовые функции OpenGL (например, преобразования координат, отсечение, вывод полигонов, расчет освещения , Наложение текстур), для достижения высокого быстродействия должен быть установлен специальный драйвер. Драйверы типа ICD (Installable Client Driver) обеспечивают интерфейс, способствует эффективному использованию аппаратных возможностей видеоадаптера. Другой тип драйвера - MCD - устанавливается обычно тогда, когда не все функции поддержаны аппаратно, в этом случае они выполняются программно центральным процессором , Что существенно медленнее.

Рассмотрим создание программ OpenGL на языке С, C ++ в среде Windows. В главе 7 при рассмотрении графики GDI мы определили ключевой момент - это создание контекста графического устройства (device context). Графика OpenGL в этом плане похожа - необходимо сначала создать контекст, названный здесь контекстом отображения {rendering context), и направлять текущий вывод графики на него. Затем необходимо закрыть этот контекст, освободить память.

Будем программировать в стиле программ StudEx предыдущих глав этой книги . этот стиль заключается в непосредственном вызова функций API Windows без каких-либо посредников типа MFC (или других подобных библиотек). Во-первых, это уменьшает исполняемый код (так как каждому посреднику нужно платить - вот только здесь за что?), А во-вторых, позволит нам более детально ознакомиться собственно с OpenGL.

Дадим общую схему программы OpenGL.

1. Создание окна программы. Здесь необходимо обязательно установить стиль окна ws_clipchildren и ws_clipsiblings. Это осуществляется заданием значений аргументов функции CreateWindow.

2. После создания окна можно открывать контекст отображения. Рекомендуется открытия этого контекста делать во время обработки сообщения wm_create.

3. Чтобы создать контекст отображения, сначала необходимо открыть контекст окна (hdc), например, функцией GetDC.

4. Для выяснения характеристик контекста отображения устанавливаем соответствующие значения полей структуры PIXELFORMATDESCRIPTOR и вызываем функцию ChoosePixelFormat. эта функция возвращает номер пиксельного формата, который можно использовать. Если это - номер 0, то создание нужного контекста отображения невозможно.

5. Вызов функции SetPixelFormat задаем соответствующий пиксельный формат в контексте hdc.

6. На основе контекста hdc создаем контекст отображения hglrc вызовом функции wglCreateContext. Для переадресации текущего вывода графики OpenGL в hglrc необходимо вызвать функцию wglMakeCurrent.

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

8. Перед закрытием окна программы необходимо закрыть все открытые контексты отображения. Также необходимо закрыть все контексты графического устройства. Это можно сделать в ходе обработки сообщения WM_DESTROY ВЫЗОВОМ функций ReleaseDC И wglDeleteContext.

Чтобы использовать библиотеку OpenGL в среде разработки программ на С и C ++ необходимо подключить соответствующие файлы заголовков.

Список использованной литературы:

1. С.В.Глушаков, Г.А.Крабе Компютерная графика , Харьков 2002

2. Блинова Т.А., Порев В.М. Компьютерная графика / Под ред. В.М.Горева. - М .: Издательство "Юниор", 2004.

3. OpenGl, технология ставшая символов , Учебник в примерах.

Похожие

Цифровая библиотека
детали Электронная библиотека Полицейской академии в Щитно была создана благодаря финансированию Министерства науки и высшего образования в рамках финансирования деятельности по распространению (DUN). Высшее полицейское училище в Щитно в 2015 году получило средства на реализацию задачи пт "Электронная библиотека Полицейской академии в Щитно". В рамках задачи 944 / P-DUN / 2015 в конце 2015 года был запущен веб-сайт и начались публикации цифровых коллекций.
Библиотека - место в школе глазами психолога - хоп! ГРОПИУС библиотека
Библиотека - пространство в школе глазами психолога. Психолог - это человек, который имеет доступ ко многим студенческим секретам. Разговаривая с молодыми людьми, я узнаю, как они видят мир. В этом тексте я хотел бы написать о школьной библиотеке. Казалось, это место было далеко от кабинета психолога. И все же не всегда ... БИБЛИОТЕКА ... .. ШКОЛЬНЫЙ ЦЕНТР КУЛЬТУРЫ И ПОБЕДИТЕЛЬНЫХ ЗНАНИЙ.
Библиотека - центр духовности и культуры Ворзель
Ежегодно, в третье воскресенье мая отмечают Всеукраинский день работников культуры и мастеров народного искусства, с целью возрождения национальной культуры и содействия развитию народного
Ак как каждому посреднику нужно платить - вот только здесь за что?