| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Использование библиотеки OpenGLАвтор: delphiman@hotmail.com Примеры 3d_1.rar Содержание
ВведениеЭта достаточно большая статья посвящена обзору библиотеки расширения OpenGL написанная Ricardo Sarmiento. Все примеры приведенные ниже написаны с использованием этой библиотеки - точнее я нашел примеры и написал статью. Cтатья скорее обзор возможностей технологии OpenGL, чем руководство к программированию. Хотя некоторые функции и процедуры Вы можете использовать и для своих приложений - например чтение файлов DXF. Хочу разъяснить ситуацию со всевозможными версиями библиотек и заголовочных файлов OpenGL. Начиная с Delphi 3 в каталоге Source можно найти файл OpenGL.pas - это и есть оригинальная версия заголовков библиотеки OpenGL. Она получена трансляцией файлов Gl.h и Glu.h, соответственно с языка C. Существует еще одно практически стандартное расширение - Glut. В оригинале Glut.h и ее трансляция на Delphi Glut.pas. Это расширение создано для более быстрого построения различных объектов OpenGL и набор полезных процедур. Все остальные версии библиотек и заголовков OpenGL являются расширениями стандартной версии и пишутся сторонними производителями. Как и та, о которой пойдет речь ниже. Призываю использовать стандартную библиотеку OpenGL. Во первых вы получите
наибольшую быстроту исполнения кода, и совместимость. Но в статье я использую
обзор библиотеки расширения OpenGL, почему? Дело в том, что новичку порой
сложно разобраться в дебрях программирования, а расширение стандартной
библиотеки позволяет быстро написать код и получить зрелищный результат.
Именно результат может подтолкнуть вас на дальнейшее изучение библиотеки
OpenGL. Итак начнем. Приведу иерархию объектов, использованных в данной библиотеке:
Использование библиотеки OpenGL - ВведениеПример 1В этом примере рассмотрены следующие вопросы : Создание сцены TSceneGL
Создание объекта TEntity - куб, задание его с помощью TFace, установка цвета и добавление на сцену.
Задание источника света Tlight и добавление на сцену.
Инициализация сцены
Простейший поворот объекта
Пример 2Отличия от предыдущего примера:
Пример 3Изменения:
Пример 4Добавили класс T3DMouse - теперь можно манипулировать объектами.
Перемещение объекта можно осуществить:
Можно установить блокировку на перемещение :
Пример 5Добавим управление отображением :
Пример 6Соберем все в один пример, добавим возможность печати и покажем FPS при повороте.
Ну вот, самая основа должна стать Вам понятна. Если у Вас не запускаются примеры, проверьте наличие библиотек Opengl32.dll и Glu32.dll. Исходники примеров находятся в каталогах Demo1-XXX. Использование библиотеки OpenGL - ТекстурыЭта глава посвящена текстурированию объектов в OpenGL. В каждом примере я даю пояснения только к новому. По этому лучше посмотреть сначала пример 1 потом 2, а не начинать с примера 5. В этой главе описаны примеры использующие фильтрации текстур, и при использовании GL_linear нужен 3D ускоритель, иначе будет работать ОЧЕНЬ медленно. Пример 1Закрашиваем полигоны
Пример 2Формат DXF является очень неудобным для записи т.к. имеет большие размеры. Для этого автор создает другой формат записи. Добавлена функция чтения-записи.
Пример 3Наложение текстур на объект
Да в качестве эксперимента вы можете убрать все начиная с with thing do ..... end (задания точек для текстур ) и переписать thing.texture.automatic:=true. Использование типов фильтрации текстур
Пример 4Установка прозрачности у текстур (альфа каналов)
При запуске программы сначала создается сцена с освещением, но объект создается только после установки, по выполнению процедуры FormCreate_partII.
Пример 5Программная текстура :) Процесс прост - при нажатии на кнопки с цифрами мы создаем TBitmap и через его Canvas пишем эти цифры. Далее сохраняем этот ТBitmap в файл 'texture.bmp'. Удаляем с экрана компа старую текстуру и загружаем новую из ранее созданного 'texture.bmp'.
Исходные тексты всех примеров находятся в каталогах Demo2-XXX Использование библиотеки OpenGL - ОсвещениеПример 1В этом примеры показано как задать параметры источника. Ранее источник
света задавался по умолчанию. Создадим источник типа прожектор
Грубо говоря это коэфициент показывающий как далеко пройдет свет. Если SpotExponent=0, то пучек света уходит в бесконечность. Идем далее :
Задаем ориентацию прожектора и его положение в системе координат.
Пример 2Наиболее полно контролируем параметры освещения и даже перемещем источник в
пространстве.
Все, исходные тексты всех примеров этой главы вы найдете в каталогах Demo3-XXX Использование библиотеки OpenGL - ТуманПример 1Установить поддержку тумана в сцене очень просто :
Все остальное в примере это установка параметров тумана : Тип тумана может быть :
Минимальная и максимальная дистанция :
Интенсивность :
Цвет для каждой компоненты RGB :
После каждого изменения параметров не забывайте вызывать Redraw. Для нормального эффекта тумана очень важно подобрать правильный цвет фона и самого тумана. Они должны примерно совпадать /см картинку /. Примеры находятся в каталоге Demo4-XXX.
Рубрика: OpenGL
Инструменты Internet Explorer 8 Beta 2 для разработчиков.
Подробнее... |
Рубрика: Вебмастеру
| Добавлено: 05.09.2008
Google Developer Day 2008 в Москве.
Дата проведения: 28 октября 2008 г.; Место проведения: Амбер Плаза, Москва, Россия. Конференция для веб-разработчиков и разработчиков мобильных приложений в Москве. Узнайте, как наилучшим образом использовать инструменты разработки и API от Google, чтобы создавать социальные, мобильные и картографические приложения, как использовать AJAX/JavaScript инструменты и библиотеки от Google и многое другое из первых уст.
Подробнее... |
Рубрика: Мероприятия
| Добавлено: 05.09.2008
ТОП 10 самых раздражающих факторов для программиста.
Совсем недавно наткнулся в интернете на забавный "хит-парад" наиболее раздражающих вещей для программиста. Поскольку он был на английском — решил перевести текст и несколько адаптировать к нашим реалиям…
Подробнее... |
Рубрика: Разное
| Добавлено: 03.09.2008
Остальные статьи:
Windows Server 7, 8 и 9
jQuery для JavaScript-программистов
Инновационный веб-броузер Google Chrome стартует уже сегодня
Windows 7: подход к производительности системы
Trac + Subversion @ Ubuntu: Revisited
[g]Vim в режиме Python: Рекомпиляция в Windows
Java + JSON. Пути к дружбе
Драйвер SQL Server 2005 для PHP
Типы данных в MySQL (сжатый справочник для PHP программиста)
PHP класс для работы с Яндекс.XML
Ошибки начинающих PHP разработчиков
Наследование шаблонов в Smarty
Особенности хранения сессий PHP в memcached
Internet Explorer 8 beta 2
9 правил для начинающего Ajax-разработчика
ExtJS 2.2 - полная поддержка Firefox 3, новые виджеты и другие нововведения |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|