OpenGL в Delphi

       

Пакет Vstudio7

Вы узнаете, как управлять координатными пространствами Windows, как осуществлять взаимодействие нескольких представлений одного документа, как добиваться эффективности и реалистичности изображений OpenGL, как использоватьShell API для управления файловым деревом, как разрабатывать СОМ-серверы и СОМ-контейнеры, как синхронизировать множество элементов управления в рамках диалога, как создавать свои собственные нестандартные окна, как использовать контейнеры и алгоритмы стандартной библиотеки C++ (STL), как строить графики функций в трехмерном пространстве и, наконец, как решать простейшие краевые задачи с демонстрацией результатов в виде аккуратных графиков. Кроме того, в последней главе вы найдете информацию об архитектуре Windows, с точки зрения разработчика программного обеспечения.
При изложении материала я не стараюсь подробно рассматривать все технические детали использования какого-либо класса, функции или типа данных, так как, на мой взгляд, нецелесообразно ставить себе задачу запоминать детали. Во-первых, их очень много даже в рамках одной технологии, во-вторых, MSDN (Microsoft Developer Network) для того и существует, чтобы при необходимости быстро прийти на помощь, в-третьих, я верю в принцип: чем чаще используете, тем вероятней, что запомните. Вместо этого ставится задача показать, какие преимущества вы получаете, используя новую сущность или новый технологический прием, а главное, как их использовать.

Начало работы с Visual Studio.Net
Итак, вы успешно преодолели все трудности установки Microsoft Visual Studio. Net 7.0 (если они были, а они в изобилии присутствовали в бета-версии продукта, с которой я имел дело в момент написания книги) и готовы покорить определенные высоты с помощью вашей неудержимой фантазии программиста и возможностей студии. Инструменты Studio.Net, несомненно, помогут воплотить ваши идеи в реальные проекты, которые теперь принято называть решениями (solutions) — термин, обозначающий новую концепцию логического хранилища проектов.

Режимы отображения координат
В Windows любые операции вывода являются графическими. Подсистема GDI делает вывод анпаратно независимым. Это означает, что информация, выводимая на любое физическое устройство, будет выглядеть почти одинаково. На экране монитора, на плоттере и на принтере будут отражены все детали текста или изображения. Кроме того, GDI поддерживает логические устройства вывода, такие как память или диск.

Традиционное Windows-приложение
Если вы хотите самостоятельно освоить какой-либо технологический прием или способ управления ресурсами, а так же инструментами Windows, то лучше всего обратиться к разделу Platform SDK документации (MSDN). В блоке страничных окон, которыми вы успешно пользуетесь, имеется страница Dynamic Help, которая помогает быстро отыскать необходимую информацию в море документации, сопровождающей Studio.Net.



Анализатор кодов ошибок
Итак, мы покончили с интерфейсной шелухой и нам осталась самая интересная и трудная часть работы — внесение в приложение той логики, которая была определена на этапе постановки задачи. Она состоит в следующем. Мы должны найти файл Win Error, h, просканировать его и выудить из него полезную информацию. Эту информацию надо поместить в контейнер объектов типа ErrorType. Если вы помните, мы поместили объявление этого типа в начало файла LookDlg.h.

Управление файловым деревом
Нам понадобятся методы для управления тремя окнами: CLef tview, CRightView и CDrawView. Последний класс будет управлять окном, в котором полигон может быть отредактирован. Этот класс надо еще создать. Замените существующий интерфейс класса CTreeDoc на тот, который приведен ниже. Здесь мы также провели упрощение начальной заготовки по схеме, обсуждавшейся выше

Графика OpenGL
Другие функции OpenGL позволяют размещать объекты на трехмерной сцене, выбирать точку размещения глаза наблюдателя (камеру), передвигать эту точку. Неотъемлемой частью трехмерной графики является освещение материалов. Конвейер OpenGL использует специальные алгоритмы подсчета цвета любого фрагмента с учетом заданных свойств материала и источников света. Моделирование атмосферных эффектов (тумана, дыма, дымки) делает изображения более реалистичными.

Трехмерные графики функций
В этой главе мы разработаем Windows-приложение, которое в контексте OpenGL изображает трехмерный график функции, заданной произвольным массивом чисел. Данные для графика могут быть прочтены из файла, на который указывает пользователь. Кроме этого, пользователь будет иметь возможность перемещать график вдоль трех пространственных осей, вращать его вокруг вертикальной и горизонтальной осей и просматривать как в обычном, так и скелетном режим

От сырых COM API к проекту ATL
В этом уроке мы научимся разрабатывать приложения, которые реализуют функции СОМ-сервера и СОМ-контейнера. Известная вам технология OLE (Object Linking and Embedding) базируется на модели COM (Component Object Model), которая определяет и реализует механизм, позволяющий отдельным компонентам (приложениям, объектам данных, элементам управления, сервисам) взаимодействовать между собой по строго определенному стандарту. Технология разработки таких приложений кажется довольно сложной для тех, кто сталкивается с ней впервые.

Трехмерная графика в проекте ATL
В этом уроке мы продолжим разработку DLL-модуля, который после регистрации в системе в качестве СОМ-объекта позволит любому другому клиентскому приложению, обладающему свойствами контейнера объектов СОМ использовать его для отображения в контексте OpenGL трехмерного графика функции, заданной произвольным массивом чисел. Данные для графика СОМ-объект берет из файла, на который указывает пользователь клиентского приложения.

Из жизни студентов
Как показывает практика, студенты по-разному относятся к тому факту, что доля курсовых проектов, которые необходимо выполнять в виде компьютерных приложений, непрерывно растет. Некоторые их очень любят, так как подобные проекты позволяют продемонстрировать неординарность мышления, изобретательность и свой собственный «неподражаемый» стиль программирования, другие ненавидят, так как работающее приложение невозможно создать без тщательной проработки почти всех деталей, в том числе и тех, которые кажутся мелкими и незначительными.

Решаем краевую задачу
В этом разделе мы разработаем MFC приложение с SDI-интерфейсом, которое использует контейнеры STL для хранения последовательностей величин, участвующих в формулировке простейшей одномерной краевой задачи матфизики. Сама задача формулируется в виде дифференциального уравнения, связывающего искомую функцию, пространственную координату и параметры, зависящие от свойств среды.

Некоторые сведения об архитектуре Windows
Как известно, объем адресуемой памяти определяется размером регистра команд, который обычно зависит от длины машинного слова. Во времена, когда эта длина была равна 16 битам, можно было без особых ухищрений обратиться к любому байту из диапазона (0, 216-1), или 65536 = 64 Кбайт. Обращение к адресам памяти вне этого диапазона стоило определенных усилий.

OpenGL в Delphi

Для программистов, использующих язык С, существует множество источников, из которых можно почерпнуть сведения о том, как использовать библиотеку OpenGL, для программистов же, работающих с Delphi, таких источников крайне мало. Данная книга призвана восполнить этот недостаток информации. В состав стандартной поставки Delphi (начиная с третьей версии) входит заголовочный файл, позволяющий строить приложения с использованием OpenGL, a также справочный файл по командам этой библиотеки. Однако инсталляция Delphi не снабжается ни одним примером по использованию OpenGL, a из файла справок новичку трудно понять, как это сделать. Поэтому основная цель книги - помочь программистам, в том числе и опытным, разобраться в этой теме.

Введение
OpenGL - не отдельная программа, а часть операционной системы. Это означает, что откомпилированное приложение, использующее OpenGL, не нуждается ни в каких дополнительных программах и модулях, кроме стандартных, содержащихся на любом компьютере с установленной операционной системой Windows 95 версии OSR2 и выше. Вообще говоря, в этой книге идет речь о программировании приложений, использующих графический акселератор, однако все приводимые программы будут работать и на компьютере, не оснащенном ускорителем.

Подключение OpenGL
В этой главе дается представление о том, как в действительности работает Windows-приложение. Для понимания действий, требуемых для подключения OpenGL, необходимо иметь представление о важнейших понятиях операционной системы Windows, завуалированных в Delphi и напрямую обычно не используемых программистом. В качестве примера подробно разбирается минимальная программа, использующая OpenGL.

Двумерные построения
OpenGL является низкоуровневой библиотекой В частности это означает, что рисование объемных фигур сводится к последовательному рисованию в пространстве плоских фигур, образующих нужную объемную. Поэтому, даже если вас интересует только использование 3D возможностей библиотеки, пропускать эту главу не рекомендуется. Примеры располагаются на дискете в каталоге Chapter2.

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

Визуальные эффекты
Эта глава посвящена тому, как повысить качество получаемых образов и как получить некоторые специальные эффекты Приступать к ней стоит только после того, как материал предыдущих глав основательно изучен

Пример CAD-системы: визуализация работы робота
В этой главе читатель получит представление о принципах построения сравнительно масштабных проектов, которые иллюстрируют возможности использования OpenGL для практических целей. Будут рассмотрены два проекта, связанные с визуализацией работы автоматов, робототехнических установок. Обсуждаются также некоторые решения технических проблем, возникающих при выполнении больших проектов.

Создаем свой редактор
Эта глава посвящена разработке графического редактора на основе OpenGL. Она будет особенно полезна программистам, занимающимся созданием CAD-систем и систем визуализации ввода исходных данных для подобных приложений. Рассматриваются также вопросы, связанные с выбором объектов и выводом символов в OpenGL.

OpenGL в Интернете
Ниже приводится список сайтов, где можно получить актуальную информацию по библиотеке OpenGL и связанным с ней темам.

Компоненты Rave Reports и отчеты в приложении Delphi

На первый взгляд кажется, что в сфере создания и печати отчетов в Delphi 7 произошла небольшая революция. Просматривая первый раз Палитру компонентов, вы не найдете в ней хорошо знакомой по прошлым версиям Delphi страницы QReport. Вместо старого генератора отчетов в состав Delphi 7 включен продукт Rave Reports 5.0 от фирмы Nevrona. "Ну и почему же это событие не дотягивает до революции в отчетах?" — спросит читатель. Авторы могут обосновать свою точку зрения.
Во-первых, компоненты QReport по-прежнему доступны разработчику — пакет DCLQRT70.BPL все так же занимает прочное место в папке \Delphi7\Bin и может быть установлен в Палитру компонентов обычным способом. Да и было бы странно ожидать другого от фирмы Borland, которая бдительно следит за обратной совместимостью приложений. Посмотрите к примеру на страницу Win 3.1 Палитры компонентов — новые поколения программистов никогда не видели "прабабушку" Windows XP, и все же исторические компоненты занимают свое исконное место!

Генератор отчетов Rave Reports 5.0
Обработка событий
Компонент TRvNDRWriter
Аутентификация пользователя в отчете
Интерфейс переноса Drag-and-Drop
Инициализация и завершение работы DLL
Средства синхронизации потоков
Компонент TDecisionGraph
Понятие пространства имен