Простые трехмерные построения: куб и источник света

Текст программы построен на основе предыдущей программы. Новые используемые команды - GetDC, wglMakeCurrent, glEnable(с различными 3 параметрами) - в процедуре TForm1.FormCreate, glNormal3f - в TForm1.Paint.


При запуске программы последовательно происходит 3 действия:

1. Cоздание формы - OnCreate, в обработчике этого события находятся строки отвечающие за настройку интерфейса: настройка скроллеров (значение от -180 до 180, один прижат вниз, другой к левому краю формы) и сама форма размером 400 на 400 пикселей (Form1.Width := 400 и Form1.Height := 400) , далее в переменную DC получаем ссылку на устройство на котором будем рисовать, уже знакомая процедура SetDCPixelFormat(DC) возвращает формат пикселя устройства (в данном случае это просто Form) - проще это объяснить так: просим, что хотим - получаем что есть. И тем что есть пользуемся - wglCreateContext(DC) - соглашаемся этим что-то пользоваться и пользуемся - wglMakeCurrent(DC,hrc). Далее включаем свет - и опять простое объяснение: даем понять программе, что будем использовать свет - glEnable ( GL_LIGHTING ), только один источник - glEnable ( GL_LIGHT0 ) и включаем свет - glEnable ( GL_DEPTH_TEST ).
2. Событие-перерисовка OnPaint не сильно отличается от предыдущих программ - поэтому рассмотрим подробнее некоторые моменты - glClear теперь с двумя параметрами (посмотрите справку по команде), команда glNormal3f - указывает направление-вектор "лучей света" - попробуите значения поменять на прямо противоположные (т.е '1.0' на '-1.0' и наоборот) - и что увидим? - а то что наша тестовая модель стала освещаться изнутри.
3. При корректном завершении работы программы OnDestroy происходит возврат на круги своя - все, что получили возвращается в исходное состояние - все ссылки и контекст удаляются. Прочитав справочную информацию и так все поимете (щелкая мышью по гиперссылкам-командам OpenGL с интересующими Вас командами).
к оглавлению к оглавлению


Для переноса кода программы в Delphi необходимо выполнить следующие действия:

1. Сохранить текст программы под любым именем в формате TXT - Программа / Сохранить код программы - в выпадающем списке диалога "Тип файла" выбрать "Текстовый файл (*.txt)".
2. Открыть свои новый текстовый файл в любом редакторе и скопировать весь текст в буфер обмена.
3. Запустить Delphi и начать новый проект - все элементы имеют свои названия по умолчанию, поэтому Вам не следует изменять их - это важно.
4. Перейти на вкладку проекта Events и выполнить двойной щелчок в полях OnCreate, OnDestroy и OnPaint. Так же необходимо добавить 2 скроллера в любое место формы - панель инструментов Standart\ScrollBar и дважды щелкнуть по каждому скроллеру.
5. Перейти к тексту программы Unit1, стереть его весь и на его место вставить текст из буфера обмена, можно воспользоваться комбинацией клавиш Ctrl+V.
6. Запустить Ваш новый проект - F9.
Если все сделали правильно - Вы получите тот же результат, что и в Book3D редакторе.

к оглавлению к оглавлению