Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Пример рисования на поверхности визуального компонента.





(пример 10, часть 2).

{**********************************************************************}

program Dots;

uses

Forms,

Unit1 in 'Unit1.pas' {frmGL};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TfrmGL, frmGL);

Application.Run;

end.

 

{**********************************************************************}

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

OpenGL;

type

TfrmGL = class(TForm)

procedure FormCreate(Sender: TObject);

procedure FormPaint(Sender: TObject);

procedure FormDestroy(Sender: TObject);

private

hrc: HGLRC;

end;

var

frmGL: TfrmGL;

 

implementation

{$R *.DFM}

{==========================================Перерисовка окна}

procedure TfrmGL.FormPaint(Sender: TObject);

begin

wglMakeCurrent(Canvas.Handle, hrc);

glViewPort (0, 0, ClientWidth, ClientHeight); // область вывода

glClearColor (0.5, 0.5, 0.75, 1.0); // цвет фона

glClear (GL_COLOR_BUFFER_BIT); // очистка буфера цвета

glPointSize (20); // размер точек

glColor3f (1.0, 0.0, 0.5); // текущий цвет примитивов

glBegin (GL_POINTS); // открываем командную скобку

glVertex2f (-1, -1);

glVertex2f (-1, 1);

glVertex2f (0, 0);

glVertex2f (1, -1);

glVertex2f (1, 1);

glEnd; // закрываем командную скобку

SwapBuffers(Canvas.Handle); // содержимое буфера - на экран

wglMakeCurrent(0, 0);

Canvas.Brush.Color:= clGreen;

Canvas.Ellipse (10, 10, 50, 50);

end;

{==============================================Формат пикселя}

procedure SetDCPixelFormat (hdc: HDC);

var

pfd: TPixelFormatDescriptor;

nPixelFormat: Integer;

begin

FillChar (pfd, SizeOf (pfd), 0);

pfd.dwFlags:= PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;

nPixelFormat:= ChoosePixelFormat (hdc, @pfd);

SetPixelFormat (hdc, nPixelFormat, @pfd);

end;

{=============================================Создание формы}

procedure TfrmGL.FormCreate(Sender: TObject);

begin

SetDCPixelFormat(Canvas.Handle);

hrc:= wglCreateContext(Canvas.Handle);

end;

{=================================Завершение работы приложения}

procedure TfrmGL.FormDestroy(Sender: TObject);

begin

wglDeleteContext(hrc);

end;

end.

{**********************************************************************}

 

Приложение 3. Ссылки на Интернет-ресурсы по использованию библиотек OpenGL в программировании графики.

http://www.opengl.org

http://gl.satel.ru

http://www.sgi.com/software/opengl

www.opengl.org.ru/ - Подборка материалов книг, документации, учебников. Примеры программ написанных с использованием OpenGL.

opengl.gamedev.ru/ - Программирование компьютерной графики средствами

OpenGL. Документация, статьи, советы.

www.codenet.ru/progr/opengl/ - Минимальная программа OpenGL. Введение в OpenGL.

nehe.gamedev.net/ - главная страница компании NeHe, учебники, ресурсы.

www.rsdn.ru/article/opengl/ogltut2.xml - Учебное пособие по OpenGL. www.citforum.ru/programming/opengl/index.shtml - книга Игоря Тарасова «OpenGL».
talk.mail.ru/forum/fido7.ru.opengl - Форумы@Mail.Ru:

Форум Стандаpт визуализации OpenGL.

pmg.org.ru/nehe/ - OpenGL - уроки от NeHe: переводы по OpenGL,

трехмерная графика, игры, мультимедия Translations Russian OpenGL.

www.firststeps.ru/mfc/opengl/opengl1.html - первые шаги в создании программы с OpenGL

www.bib.com.ua/cat_art28.html - руководство по написанию программ.

 

Библиографический список.

11. Боресков А. Графика трехмерной компьютерной игры на основе OpenGL. – М.: Диалог-МИФИ, 2005.

12. Гашников М. и др. Методы компьютерной обработки изображений. - М.: Физматлит, 2001.

13. Павлидис Т. Алгоритмы машинной графики и обработка изображений. - М.: Радио и связь. 1986.

14. Петров М. Компьютерная графика. Учебник для вузов. - СПб.: Питер, 2002.

15. Рейбоу В. Компьютерная графика. Энциклопедия. - СПб.: Питер, 2002.

16. Роджерс Д. Алгоритмические основы машинной графики. - М.: Мир, 1989.

17. Снижко Е. Компьютерная геометрия и графика: Конспект лекций. – СПб.: Изд. БГТУ, 2005.

18. Шикин Е., Боресков А. Компьютерная графика. Динамика, реалистические изображения. - М.: Диалог - Мифи, 1985.

19. Шикин Е., Боресков А. Компьютерная графика. Полигональные модели. – М.: Диалог-МИФИ, 2005.

20. Эйнджел Э. Интерактивная компьютерная графика. Вводный курс на базе OpenGl. - М.: Изд. Дом «Вильямс», 2001.

21. Херн Д., Бейкер М. Компьютерная графика и стандарт OpenGL. – М.: Изд. Дом «Вильямс», 2005.


Оглавление.

 

Предисловие.. 3

Лабораторная работа № 1. Подключение библиотек; контекст устройства, контекст воспроизведения; общий вид программы. 4

Цель работы. 4

Необходимые теоретические сведения. 4

Основные понятия, используемые в данной лабораторной работе: контекст устройства, контекст воспроизведения, формат пиксела. 5

Порядок выполнения работы. 5

Контрольные вопросы. 18

Лабораторная работа № 2. Примитивы OpenGL, основные приемы построения двумерных объектов. 18

Цель работы. 18

Необходимые теоретические сведения. 18

Командные скобки. Использование функций glBegin и glEnd. 19

Аргументы функции glBegin. 20

Включение и отключение режима сглаживания (антиэлайзинг). 20

Вывод точек в OpenGL. 21

Линии: одиночные, ломаные, замкнутые ломаные. 22

Вывод треугольников: одиночные треугольники, ленты треугольников, веера треугольников. 23

Вывод четырехугольников. 25

Рисование полигонов, передние и задние грани полигонов. 25

Построение невыпуклых полигонов. 26

Особенности режимов закрашивания для многоугольников. 27

Задания к лабораторной работе. 27

Варианты к заданию. 29

Дополнительные задания. 30

Контрольные вопросы. 30

Лабораторная работа № 3. Использование массивов вершин. Преобразования координат. 31

Цель работы: 31

Порядок выполнения лабораторной работы. 31

Необходимые теоретические сведения. 31

Массивы вершин. 31

Включение/выключение режима. 31

Заполнение массива вершин. 32

Команды рисования. 33

Геометрические преобразования. 33

Матрица моделирования. 34

Преобразование переноса: 34

Преобразование поворота: 34

Преобразование масштабирования: 35

Задания к лабораторной работе. 36

Варианты к заданиям. 37

Дополнительные задания. 37

Контрольные вопросы. 38

Лабораторная работа № 4. Трехмерные построения. Буфер глубины. Видовые параметры. Параллельная и перспективная проекции. 38

Цель работы. 38

Порядок выполнения работы. 38

Необходимые теоретические сведения. 39

Трехмерные координаты. 39

Буфер глубины. 39

Проекции. 40

Видовые параметры. 40

Место команд в программе. 41

Матрица проецирования. 42

Задания к лабораторной работе. 43

Варианты заданий. 44

Дополнительные задания. 45

Контрольные вопросы. 45

Лабораторная работа № 5. Квадрик-объекты. Камера. 46

Цель работы. 46

Порядок выполнения работы. 46

Необходимые теоретические сведения. 46

Квадрик-объекты. 47

Перспектива. 50

Моделирование камеры. 50

Задания к лабораторной работе. 51

Варианты к заданиям лабораторной работы. 52

Дополнительные задания. 53

Контрольные вопросы. 53

Лабораторная работа № 6. Освещение. 54

Цель работы. 54

Порядок выполнения работы. 54

Необходимые теоретические сведения. 54

Модель освещения. 55

Фоновый, диффузный, зеркальный и исходящий свет. 56

Цвет материала и света. 57

Включение фонового освещения. 59

Задание параметров материала. 59

Создание, позиционирование и включение одного или более источников света. 60

Параметры источника света. 62

Цвет. 63

Позиция и ослабление. 63

Задания лабораторной работе. 64

Варианты к заданию лабораторной работы. 65

Дополнительные задания. 65

Контрольные вопросы. 66

Лабораторная работа № 7. Текстуры: режимы фильтрации, режимы взаимодействия текстуры с накладываемым объектом, автоматическая генерация текстурных координат. 66

Цель работы. 66

Необходимые теоретические сведения. 66

Подготовка изображения для использования в текстуре. 67

Создание текстуры.. 68

Использование текстуры. 74

Пример наложения текстуры с растяжением на прямоугольный объект. 76

Пример наложения текстуры на треугольник. 76

Пример мозаичного(тайлового) покрытия текстурой. 77

Пример создания с помощь текстур эффекта отражения. 78

Задания к лабораторной работе и порядок выполнения. 78

Контрольные вопросы. 79

ПРИЛОЖЕНИЯ. 81

Приложение 1. Минимальный код программы OpenGL на C++. 81

Приложение 2. Минимальный код программы для использования OpenGL в программе на Delphi. 84

1) Оконное приложение. 84

2) Консольное приложение. 85

3) Пример рисования на поверхности визуального компонента. 88

Приложение 3. Ссылки на Интернет-ресурсы по использованию библиотек OpenGL в программировании графики. 89

Библиографический список. 90

 

 

 


[1] Лабораторные работы практикума могут выполняться в среде визуального программирования Delphi. В Приложении 2 содержатся варианты минимальной программы OpenGL на Delphi.

 

[2] В программе на C++ указатель записан в виде &pfd, в программе на Delphi следует записать @pfd.

[3] В Delphi вместо символа «|» используется «or».

[4] В Delphi шаблон запишется в виде, например $F0F0.

[5] В Delphi переменную-указатель на квадрик-объект объявляют так

quadricObj: GLUquadricObj;







Дата добавления: 2015-10-19; просмотров: 506. Нарушение авторских прав; Мы поможем в написании вашей работы!




Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Демографияда "Демографиялық жарылыс" дегеніміз не? Демография (грекше демос — халық) — халықтың құрылымын...

Субъективные признаки контрабанды огнестрельного оружия или его основных частей   Переходя к рассмотрению субъективной стороны контрабанды, остановимся на теоретическом понятии субъективной стороны состава преступления...

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

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

Билиодигестивные анастомозы Показания для наложения билиодигестивных анастомозов: 1. нарушения проходимости терминального отдела холедоха при доброкачественной патологии (стенозы и стриктуры холедоха) 2. опухоли большого дуоденального сосочка...

Studopedia.info - Студопедия - 2014-2025 год . (0.014 сек.) русская версия | украинская версия