- •Методические указания
- •Введение
- •Лабораторная работа № 5 введение в opengl
- •1. Цель работы
- •2. Комментарии по выполнению работы
- •3. Содержание и порядок выполнения работы
- •Задания
- •Лабораторная работа №6 построение трехмерных изображений
- •1. Цель работы
- •2. Комментарии по выполнению работы
- •3. Содержание и порядок выполнения работы
- •Задания.
- •Контекст устройства и контекст воспроизведения
- •Формат пиксела
- •Тип Tcolor и цвет в OpenGl
- •Библиографический список
- •Содержание
- •394026 Воронеж, Московский просп., 14
- •Составители: а.М.Нужный н.И. Гребенникова
3. Содержание и порядок выполнения работы
Создать приложение.
Откомментировать используемые в программе функции OpenGL.
Оформить отчет.
Задания.
Создать программу, которая рисует:
Фигуру |
Применить к построенной фигуре различные команды |
|
установки видовых параметров
|
|
|
|
|
|
|
|
|
|
|
|
установки источника света
|
|
|
|
установки характеристик материала |
|
|
|
вращения |
|
:
ПРИЛОЖЕНИЕ 1
Контекст устройства и контекст воспроизведения
Ссылка на контекст устройства это величина типа HDC. Для ее получения можно вызвать функцию GetDC, аргументом которой является ссылка на нужное окно.
Пример функции, рисующей прямоугольник на рабочем столе:
procedure TfrmGL.Button1Click(Sender: TObject);
var
dc: HDC;
begin
dc := GetDC (0); // получаю ссылку на рабочий стол
Rectangle (dc, 10, 10, 110, 110);
ReleaseDC (Handle, dc);
DeleteDC (DC);
end;
или рисование прямоугольника на своем окне:
procedure TfrmGL.Button2Click(Sender: TObject);
var
dc: HDC; // ссылка на контекст устройства
begin
dc:= GetDC (Handle); // задаем значение ссылки
Rectangle (dc, 10, 10, 110, 110); // рисуем прямоугольник
ReleaseDC (Handle, dc); // освобождение ссылки
DeleteDC (dc); // удаление ссылки, освобождение памяти
end;
Ссылке на контекст устройства соответствует свойство canvas.Handle формы, принтера и некоторых компонентов Delphi.
Каков же все-таки смысл контекста устройства, если он и так связан с однозначно определенным объектом - окном, областью памяти или принтером, и зачем передавать дополнительно какую-то информацию об однозначно определенном объекте?
Для ответа на эти вопросы обратим внимание на свойство вывода в Windows, состоящее в том, что одними и теми же функциями осуществляется вывод на различные устройства. Строки программы:
Form1. Canvas. Ellipse (0, 0, 100, 100); и Printer. BeginDoc; Printer.Canvas. Ellipse (0, 0, 100, 100); Printer. EndDoc;,
рисуют один и тот же круг как на поверхности формы, так и в распечатываемом документе, т. e. на различных устройствах, причем, если мы будем выводить разноцветную картинку на монохромный принтер, он справится с этой задачей, передавая цвета оттенками серого.
Даже если рисовать только на поле формы, мы имеем дело с различными устройствами - нам неизвестно, какова графическая плата компьютера и каковы характеристики текущей установки настроек экрана. Например, имея в своем распоряжении более 16 миллионов цветов, приложение не заботится об отображении этой богатой палитры на экране, располагающем всего 256 цветами. Такие вопросы приложение перекладывает на плечи операционной системы, решающей их посредством использования драйверов устройств.
Для того чтобы воспользоваться функциями воспроизведения Windows, приложению необходимо только указать ссылку на контекст устройства, содержащий средства и характеристики устройства вывода.
Справочный файл Win32 Programmer's Reference фирмы Microsoft, поставляемый в составе Delphi, o контексте устройства сообщает следующее "Контекст устройства является структурой, которая определяет комплект графических объектов и связанных с ними атрибутов и графические режимы, влияющие на вывод Графический объект включает в себя карандаш для изображения линии, кисть для закраски и заполнения, растр для копирования или прокрутки частей экрана, палитру для определения комплекта доступных цветов, области для отсечения и других операций, маршрут для операций рисования".
В OpenGL имеется аналогичное ссылке на контекст устройства понятие ссылка на контекст воспроизведения. Графическая система OpenGL, как и любое другое приложение Windows (хоть и размещенное в DLL), также нуждается в ссылке на устройство, на которое будет осуществляться вывод Это специальная ссылка на контекст воспроизведения - величина типа HGLRC (Handle openGL Rendering Context, ссылка на контекст воспроизведения OpenGL).
ПРИЛОЖЕНИЕ 2