Opengl профессиональное программирование трехмерной графики на c: OpenGL. Профессиональное программирование трехмерной графики на C++ (+ СD)

Содержание

OpenGL. Профессиональное программирование трехмерной графики на C++ (+CD) » MIRLIB.RU


Название: OpenGL. Профессиональное программирование трехмерной графики на C++ (+CD)
Автор: Гайдуков С.А.
Издательство: БХВ-Петербург
Год: 2004
Страниц: 720
ISBN: 5-94157-363-4
Формат: DJVU
Размер: 523 Мб
Язык: русский
Серия: Профессиональное программирование

Книга посвящена использованию новых возможностей OpenGL версий 1.2 и выше в приложениях, разрабатываемых в Microsoft Visual Studio .NET 2002, использующих язык C++. Начиная с простых примеров, подробно и последовательно рассматривается использование средств NVIDIA OpenGL и расширений OpenGL для загрузки текстур из файлов форматов TGA и JPG, экспорт моделей из 3D Studio MAX, хранение данных в ZIP-архивах, отсечения невидимой геометрии, моделирования глянцевых объектов и т.д.
Большое внимание уделяется вопросам оптимизации и ускорения работы приложений.

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

Содержание


Введение
На кого рассчитана эта книга
Структура книги
Требования к программному и аппаратному обеспечению
Благодарности
Часть I. Использование NVIDIA OpenGL SDK
Глава 1. Библиотека GLUT
Глава 2. Библиотека GLH
Глава 3. Библиотека NV_MATH
Глава 4. Библиотека NV_UTIL
Часть II. Расширения OpenGL

Глава 5. Введение в расширения OpenGI
Глава 6. Расширения EXT_texture_rectangle и NV_tcxture_rectangle
Глава 7. Проверка видимости объектов с использованием расширений HP_occlusion_test и NV_occlusion_query
Глава 8. Использование внеэкранных буферов
Глава 9. Сжатые текстуры
Глава 10. Кубические текстурные карты
Часть III. Приложения
Приложение 1. Таблица расширений, поддерживаемых видеокартами корпорации NVIDIA
Приложение 2. Таблица расширений, поддерживаемых видеокартами корпорации ATI
Приложение 3. Описание компакт-диска
Список литературы и источников в Интернете
Предметный указатель

Компакт-диск, прилагаемый к книге, содержит восемь каталогов:


ATI SDK — заголовочные файлы для реализации OpenGL корпорации ATI;
BugLayerUtils — библиотека BuglsayerUtils из книги [8] (библиотека имеется на CD-ROM). Эта библиотека изменяет макрос assert стандартной библиотеки C++, после чего он начинает выводить множество дополнительной информации, а также исправляет ряд ошибок в Visual C++;
DOC — документация, на которую имеются ссылки в тексте книги;
Drivers — драйвера для видеокарт корпораций ATI и NVIDIA, используемые при подготовке примеров для этой книги;
Examples — проекты примеров книги, сгруппированные по главам;

NVIDIA SDK — NVIDIA SDK 5.21 с несколькими обновлениям, а также другой инструментарий NVIDIA:
DXT_TOOLS_v5. 32 — набор утилит NVIDIA для работы с файлами формата DDS;
Extensions — библиотеки GLH_GLUT_EXT и NV_UTIL_EXT, расширяющие функциональность библиотеки OpenGL Helper Library и NV_UTIL соответственно;
NV_DDS — обновлённая версия библиотеки NV_DDS, позволяющая загружать текстуры из файлов формата DDS;
Textures — библиотека текстур высокого разрешения формата DDS;
Update — обновлённые файлы NVIDIA OpenGL SDK;
psCamera — вспомогательные классы проверки попадания прямоугольной оболочки объекты в видовой объём камеры, созданные Петром Поповым;
Setup — файлы инсталляции примеров.

Скачать Гайдуков С.А. — OpenGL. Профессиональное программирование трехмерной графики на C++ (+CD)



Нашел ошибку? Есть жалоба? Жми!
Пожаловаться администрации

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Программирование в трехмерной графики.

Серия «Мастер» +Д E-Book

ОБЯСНЕНИЕ:

…рафики в кино и телевидении и существует как для 32, так и для 64-битных систем … WebGL: программирование трехмерной графики, Мацудо К … … . Д.В.Силаков, «Текущее состояние и перспективы развития инфраструктуры LSB» В статье рассказывается о технической стороне разработки стандарта Linux Standard Base и связанной с ним инфраструктуре. Шрайнер Издательство: Питер Год: 2006 Страниц: 624 Формат: pdf Размер: 49.04 Мб ISBN: 5-9 … Программирование графики для Windows Серия Мастер-класс … . Шрайнер Издательство: Питер Год: 2006 Страниц: 624 Формат: pdf Размер: 49.04 Мб ISBN: 5-94723-827-6, -3211-7348-1 Серия или Выпуск: Серия: Библиотека программиста От. Программирование: Python, C++. в 4 ч. 1 ч. Автор(ы): Поляков К. Ю. В пособии рассматриваются основы … мирование компьютерной графики », в кото — ром рассматривались вопросы изучения сре-ды C# в MS VisualStudio и библиотеки OpenGL. В пособии анализируются важные для Создание трёхмерной графики в Cinema 4D.

… Мы разберем работу с координатами трехмерной графики и рассмотрим … Эта серия, написанная в период с 1988 по 1995 года и состоящая из шестнадцати частей, является нетехническим введением в конструирование компиляторов. Глава 6. Введение в трехмерную графику 409 Глава 7. Визуализация трехмерных каркасных объектов 515 Часть iii. Основы трехмерной визуализации 627 Глава 8. Интернет-магазин издательства БХВ (bhv) — техническая, компьютерная, деловая, учебная литература. Детские книги, публи % цистика. Заказать и купить книги с доставкой Книги для профессионалов и новичков от издательства «БХВ» 3.1 Анімація комп’ютерної графіки. Одна з найбільш захоплюючих речей, яку ви можете зробити в області комп’ютерної графіки, — це малювання зображень, що рухаються. С терминологией по КГиА можно познакомиться в публикации Д.В. Волков, А.Н. Ефлеев, Н.Г. Шагурина «Англо-русский толковый словарь терминов по компьютерной графике» (Мир ПК, n4, 1994). Востребованность 3d — моделирования широка: от рекламы до компьютерных игр.
Воплотите в … М.М. Соловьев 3DS MAX 6 Мир трехмерной графики.pdf Майкл Гурвиц,Лора Мак Кейб Использование Macromedia Flash MX.pdf Майкл Эбен Брайан Таймэн FreeBSD Энциклопедия пользователя.pdf…

opengl | ProgBook — книги и учебники по программированию

Данная книга будет просто незаменимой для тех, кто хочет с самого начала изучить популярные шейдеры DirectX и OpenG и в будущем с ними мастерски работать. Это пособие будет постепенно увеличивать сложность информации, тем самым позволяя даже новичку изучать эту тематику.

Начинаться этот учебник будет с основ программирования графики в DirectX9. Тут будет рассказывать про основные термины, связанные с этой программой и про все техники работы с ней. Эта глава должна быть прочитана каждым, ведь здесь как раз и будет основная база, с которой начинается обучение в этой сфере.

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

Также в этой книге можно будет найти полнейшую информацию про фиксированный графический конвейер.

Этот учебник познакомит нас с основами работы с профайлером PIX for Windows. Изначально расскажут, что именно он из себя представляет, а потом уже покажут все его полезные функции. Также эта книга легко познакомит каждого с инструментарием RenderMonkey и покажет, как его можно использовать в работе. Не стоит забывать, что здесь же мы узнаем про популярную программу FX Composer и научимся использовать его инструментарий.

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

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

Автор этого пособия — Станислав Горнаков — вложил сюда максимум своего опыта и знаний, которые помогут каждому человеку с легкостью разобраться в этой теме и стать настоящим профессионалом. Информация изложена в легкой и понятной форме, что помогает быстро ее запомнить и научиться применять на практике.

В книге «OpenGL и DirectX. Программирование графики. Для профессионалов» детально описываются технологии OpenGL и DirectX, без использования которых сейчас невозможно представить разработку графики. В любой сфере применения информационных технологий так или иначе возникают задачи, связанные с компьютерной графикой и различными ее аспектами. В большинстве случаев они играют второстепенную роль (в моделировании, системах обучения, управлении технологическими процессами), однако в отдельных сферах, в частности, играх и некоторых тренажерах, выступают основой системы. В книге рассматривается плоская и трехмерная графика, а также отдельная глава посвящена стереоизображениям и проблемам, возникающим при их создании.

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

«Расширения OpenGL» — справочник по кроссплатформенной библиотеке OpenGL, посвященный самым популярным ее расширениям, которые используются на платформах Linux и Windows для реализации разнообразных эффектов, связанных с трехмерной графикой. Материал сопровождается массой примеров, особенно в части решения практических задач, возникающих перед разработчиками в процессе написания приложений. Объясняются принципы работы с расширениями библиотеки OpenGL и различные методы использования их с целью получения доступа к функциональности графических ускорителей при помощи высокоуровневого языка шейдеров GLSL. Прилагаемый компакт-диск содержит тексты всех примеров из книги, а также исходники авторских библиотек и ряд дополнительных программ. Книга будет особенно полезна во время работы с библиотекой OpenGL и для создания приложений с 3D-эффектами, применяемыми в системах проектирования, визуализации различных данных, а кроме того — в компьютерных играх. Рекомендуется студентам вузов, аспирантам, профессиональным разработчикам графических приложений.

Данная книга содержит информацию об использовании возможностей графической библиотеки OpenGL версии выше 1.2 в приложениях, которые получают свою разработку на языке C++ в Microsoft Visual Studio.NET 2002. Для получения реалистичных и захватывающих трехмерных изображений описывается использование средств NVIDIA OpenGL SDK. Моделирование глянцевых объектов, отсечение невидимой геометрии, хранение информации в ZIP-архивах, экспорт моделей из 3ds max, загрузка текстур из файлов форматов TGA и JPG — все это и многое другое рассказано на конкретных примерах для программистов.

Книга Френсис Хилл «OpenGL. Программирование компьютерной графики. Для профессионалов» является введением в программирование компьютерной графики. Со временем свойства графических систем улучшаются, становятся быстрее и дешевле. С каждым годом изобретаются новые технические приёмы, но не меняются основные принципы и подходы к программированию. Изложение книги написано автором очень практичным и понятным текстом, главное отличие которого — основательный и интегрированный подход. Данное издание содержит в себе достаточно определённые понятия, разъяснение их математических основ, доказательства важности каждого рассматриваемого понятия. С помощью этой книги пользователь поймёт, как переводить математические представления в программный код и увидит его результат. Данная публикация ознакомит читателя с самой современной информацией в области компьютерной графики.

В книге О. В. Бартеньева «Графика OpenGL: программирование на Фортране» говорится об одном из самых интересных разделов программирования — машинной графике. Здесь описываются возможности графической библиотеки OpenGL для Windows, которая применяется в большинстве приложений, в частности, в задачах САПР, системах дизайна, программах статистического анализа и математического моделирования сложных явлений и в индустрии развлечений. Содержание книги будет понятно пользователям, создающим программы на Фортране (Digital Visual Fortran или MicrosoftFortran Power Station 4.0). Программисты, пользующиеся другими языками, могут адаптировать вызовы процедур библиотеки к языку, с которым они привыкли работать, например, к Си или Делфи. Книга пригодится тем, кто применяет средства машинной графики в разных видах деятельности, преподавателям, студентам и аспирантам ВУЗов.

Книга М. Ву, Т. Девис, Дж. Нейдера, Д. Шрайнера «OpenGL. Руководство по программированию» является 4-ым изданием OpenGL и его библиотеки инструментов. Здесь описываются потенциалы OpenGL, главные приложения и базовые методы компьютерной графики, к примеру, интерактивный просмотр объектов с различных точек наблюдения, построение и воспроизведение трехмерных моделей, применение тонирования, освещения и эффектов текстурирования. Также в книге находится подробное изложение, посвященное дополнительным методам компьютерной графики, это: сглаживание, наложение текстур, «туман» и изображение других атмосферных эффектов, сплайны, конвейерная обработка изображений и иные ключевые темы. В том числе и расширения OpenGL, поднятие оперативности программ и разработка приложений кросс-платформ.

В книге Юрия Тихомирова «OpenGL. Программирование трехмерной графики» описывается программирование визуализации трехмерных реалистических образов с применением системы графических библиотек OpenGL (для Windows 95 и Windows NT). Здесь же приводятся нужные теоретические сведения: система координат, проекции и геометрические преобразования, содержится описание основных принципов создания и обработки графических объектов в OpenGL, работы с цветом, наложения текстуры и структуры консольного приложения Windows для работы с OpenGL. Весь материал книги сопровождается практическими примерами.

Книга М. Краснова под названием «OpenGL. Графика в проектах Delphi» написана с целью знакомства читателей с использованием стандартной графической библиотеки OpenGL в программах, написанных на языке Delphi. Базируясь в начале книги на самых простых и весьма небольших примерах, очень подробно показаны и разъяснены все основные принципы программирования компьютерной графики: построения (2х и 3хмерные), анимация, текстурирование, работа по созданию зрительных эффектов и многое другое. Значительную долю книги занимает информация об ускорении приложений и оптимизации их работы. Большое количество примеров упрощает изложение информации в глазах читателя, облегчает усвоение материала, а также учит программировать в хорошем стиле. А примеры в книге — от простых до самых сложных и многоуровневых, таких, как CAD-система визуализации работы робототехнической установки и многофункциональный графический редактор, например.

Книга авторов Дональда Херна и М. Паулина Бейкера под названием «Компьютерная графика и стандарт OpenGL» написана специально для новичков, абсолютно незнакомых с компьютерной графикой. Авторы с большим опытом работы в этой области очень просто и понятно изложили основные методы, необходимые для разработки, использования и понимания систем компьютерной графики. В этой книге удачно и гармонично переплетены такие области науки, как физика, математика и программирование с использованием OpenGL. Такой подход — один из самых лучших при изучении теории и практики двух- и трехмерной графики. Материал в книге изложен четко и вместе с тем просто, без излишеств и усложнений, для большего удобства есть иллюстрации в виде диаграмм и примеров. «Планировка» книги очень удачна. Ей можно пользоваться и в качестве учебного пособия, и как справочником. Также это хорошая помощь для тех, кто интересуется математическими алгоритмами, используемыми в сфере компьютерной графики для программ низкого уровня, а также примеры кодов С++ и OpenGL. Книга написана для пользователей среднего и высокого уровня, а также для студентов и аспирантов «подходящих» специальностей.

Навигация по записям

БИБЛИОТЕКИ OPENGL И DIRECTX ДЛЯ ПРОГРАММИРОВАНИЯ ТРЕХМЕРНОЙ ГРАФИКИ

Худайберганов Темур Рустамович1, Адинаев Хушнудбек Сайлбоевич1
1Ургенчский филиал Ташкентского университета информационных технологий, ассистент

Библиографическая ссылка на статью:
Худайберганов Т.Р., Адинаев Х.С. Библиотеки OpenGL и DirectX для программирования трехмерной графики // Современная техника и технологии. 2017. № 5 [Электронный ресурс]. URL: http://technology.snauka.ru/2017/05/13496 (дата обращения: 13.09.2020).

Многие годы в программистском сообществе идет дискуссия о преимуществах использования того или иного интерфейса для создания графики. Главные соперники в этой области – библиотеки OpenGL и DirectX. Индустрия до сих пор так и не сделала однозначный выбор в пользу того или иного API. API – это Application Programming Interface, то есть интерфейс прикладного программирования. Фактически – набор функций для выполнения различных задач. В нашем случае задача – это программирование трехмерной графики.

Стандарт OpenGL (Open Graphics Library – открытая графическая библиотека) был создан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, изначально разработанная фирмой Silicon Graphics Inc (SGI). Развитие стандарта OpenGL осуществляется специальной бюрократической структурой, известной как Architectural Review Board (ARB) – Комитет по пересмотру архитектуры. Комитет состоит из представителей основных компаний, заинтересованных в развитии и использовании библиотеки. В их числе 3D Labs, SGI, Apple, NVIDIA, ATI, Intel, id Software и, конечно, Microsoft. Кстати, Microsoft поставляет реализацию OpenGL вместе со своими операционными системами. Она соответствует одной из ранних версий OpenGL и не использует возможности аппаратного ускорения. Этот недостаток восполняют драйверы видеокарт, которые предоставляют быстрые реализации OpenGL. C начала 90-х годов прошлого века OpenGL используется в различных областях индустрии и науки. Архитектура библиотеки получилась настолько удачной, что уже на протяжении более десяти лет она остается стабильной и предсказуемой. OpenGL де-факто является стандартом в области программирования графики. Но в этом скрыт и ее недостаток. ARB работает довольно медленно – любое изменение стандарта требует множества согласований, документов и так далее. В силу этого OpenGL развивается очень вяло. Правда, до последнего времени с этим не было проблем, поскольку изначально библиотека предназначалась для быстрых рабочих станций профессионального уровня, которые обновляют не так уж часто. Однако сейчас даже дешевые видеокарты за $100 превзошли уровень профессиональных монстров пятилетней давности стоимостью в тысячи долларов. И при этом обновление их возможностей происходит в среднем раз в год. Фактически OpenGL не поспевает за индустрией, поэтому игровые разработчики вынуждены использовать так называемый механизм расширений (extensions), чтобы получить доступ к новейшим функциям видеокарт. На данный момент OpenGL прошла путь от версии 1.0 до версии 1.4 (и это за десять лет!). Версия 2.0, обещающая революционные изменения, находится в процессе стандартизации.

DirectX к моменту выхода Windows 95 большинство игр по-прежнему делалось под MS-DOS. Windows в те времена не предоставляла возможностей для программирования игр. Многочисленные уровни абстракции (введенные в целях совместимости и универсальности) делали доступ к звуковому и видеооборудованию весьма медленным и неприменимым для игровых приложений. Поэтому было решено разработать библиотеку, предоставляющую возможность прямого доступа к аппаратуре. Это позволило бы играм работать на приемлемой скорости (и увеличило бы продажи Windows 95). Вместо создания собственного API Microsoft использовала разработку небольшой компании RenderMorphic. Первой более или менее жизнеспособной версией была DirectX 3.0. Позже последовали версии 5, 6 и 7 (четвертой не было). Седьмая версия была воспринята разработчиками с интересом: она хорошо работала, ее интерфейсы были достаточно удобны в использовании. Восьмая версия не заставила себя ждать и принесла интересные нововведения – вершинные и пиксельные шейдеры (специальные, обычно короткие программы, предназначенные для выполнения на графическом процессоре; используются для расчета освещения, создания тех или иных спецэффектов и так далее). Недавно вышедший DirectX 9 также развивает эти перспективные направления. Длительное время DirectX рассматривался как неудачная альтернатива OpenGL. Однако последние улучшения в API сделали эту библиотеку весьма мощной и стабильной. Поскольку она разрабатывается авторами ОС, можно быть уверенным, что скорость ее работы с графикой оптимальна. Многие считают, что именно DirectX, а не OpenGL, становится стандартом для программирования графики. Microsoft постоянно работает в тесном контакте с разработчиками “железа”, обеспечивая поддержку новых возможностей аппаратуры. Более того, DirectX иногда предлагает различные возможности раньше, чем на рынке появляются видеокарты с их аппаратной реализацией. Мы рассматриваем только графическую часть DirectX, но кроме графики DirectX также предлагает интерфейсы для работы со звуком, источникам ввода, мультимедиа и так далее. У OpenGL таких функций нет – это чисто графическая библиотека. Ядро OpenGL контролирует процесс обработки примитивов (то есть треугольников). Для передачи данных используется процедурная модель, фактически – вызовы функций. В каждый момент времени состояние OpenGL определяется через набор переменных, задающих параметры обработки (например, накладывать текстуру или не накладывать). Каждый новый переданный треугольник проходит обработку в соответствии с текущим состоянием. Такой механизм весьма эффективен, а код обычно короток и прост. Хотя ядро OpenGL процедурное, в использовании OpenGL совместно с объектно-ориентированными технологиями сложностей обычно не возникает: все зависит от выбора программиста. Структура DirectX очень сильно отличается от OpenGL. DirectX основан на модели COM (Component Object Model).

DirectX обычно не является идеалом легко читаемого и понимаемого. Поэтому даже рисование простого треугольника требует огромного объема кода. Разработчики Microsoft, конечно, понимают это, поэтому для упрощения программирования ими создана отдельная библиотека DirectX Common Files, которая скрывает часто используемый код. Производительность Вопрос производительности настолько же важен, насколько запутан и неясен. Дебаты на тему “Что быстрее – OpenGL или DirectX?” не утихают. При этом, как ни парадоксально, cкорость обоих библиотек одинакова. Иначе и быть не может, потому что сейчас большинство функций реализованы напрямую через аппаратные ускорители. Естественно, производительность может различаться в зависимости от степени оптимизации программного кода и используемой для тестирования аппаратной платформы.. Это не очень-то хорошо как для производителя, так и для пользователя (возрастает стоимость разработки игр, появляются ошибки и т.п.), но таковы реалии современного рынка видеоигр. Пример: считается, что драйверы от фирмы ATI для серии видеокарт ATI Radeon хорошо оптимизированы под DirectX и значительно слабее поддерживают OpenGL. Однако специально написанные тесты не выявили значительной разницы в скорости работы программ. Сравнение в чем же, если не в производительности, различие между библиотеками? Прежде всего – в удобстве интерфейса, функциях, гибкости, перспективах развития и области применения. Начнем с функций. Неоднократно приходилось слышать заявления типа: “DirectX 9 поддерживает пиксельные шейдеры, а OpenGL не поддерживает, поэтому все игры должны быть написаны под DirectX!” При этом ARB остается весьма неповоротливым, и надеяться на оперативное включение новых опций не позволяет. Для решения этой проблемы в OpenGL существует механизм расширений, с помощью которого можно использовать различные функции, не входящие в базовую спецификацию, а поддерживаемые только реализацией OpenGL для конкретной видеокарты. Этот процесс выглядит следующим образом: как только производитель выпускает видеокарту с поддержкой определенной полезной функции, он включает ее в свою реализацию OpenGL (которая обычно входит в поставку драйвера). Для программиста эта возможность становится доступной, если он специальным образом запросит данное расширение. OpenGL идеален для визуализации результатов научных исследований. Изменения в OpenGL предлагаются, обсуждаются и утверждаются представителями различных компаний. Что касается DirectX, то здесь ситуация прямо противоположная. Только Microsoft может вносить какие-либо изменения в библиотеку. Иначе говоря, именно Microsoft в конечном итоге определяет все пути развития библиотеки, и если путь был выбран неверно, это может быть исправлено только в новой версии. Итак, достоинства библиотек становятся наиболее очевидны при их использовании в разных (но в то же время пересекающихся) прикладных областях. DirectX идеален для профессиональной разработки игр и мультимедийных приложений на платформе Windows. OpenGL используется на высокопроизводительных рабочих станциях, в научной сфере, в образовании, а также в любых проектах, где требуется переносимость приложений на различные программные или аппаратные платформы. И в дальнейшем развитие DirectX наверняка будет связано с постепенным улучшением гибкости и удобства использования.


Библиографический список
  1. https://geektimes.ru/post/280272/
  2. http://www.ict.edu.ru/ft/002394/num5opgl.pdf
  3. http://www.masters.donntu.org/2015/frt/yablokov/library/article8.htm
  4. http://www.gamedev.ru/code/forum/?id=181426


Все статьи автора «ferrum»

учебник по OpenGL

 
benusi   (2006-09-28 10:56) [0]

Срочно нужен учебник в електроном виде по Opengl


 
Pa5ha   (2006-09-28 13:35) [1]

Посмотри на D3Dengine. narod.ru Кажися там был. Краснов. С примерами.


 
@!!ex ©   (2006-09-28 13:46) [2]

елктронный вид — это сильно…. 🙂
А что конкретно нужно то?
Для начинающих? По расширениям? Анимации? Шейдерам?
А вообще Pa5ha дал правильную ссылку. Для начинающих.


 
benusi   (2006-09-28 15:44) [3]

Для начинающих? По расширениям? Анимации? Шейдерам?


 
@!!ex ©   (2006-09-28 16:13) [4]


> Для начинающих?

Михаил Краснов
OpenGL графика в проектах Delphi


> По расширениям?

Сергей Гайдуков
OpenGL. Профессиональное программирование трехмерной графики на С++.


> Анимации?

Джим Адамс
DirectX. Продвинутая анимация.


> Шейдерам?

Рэнди Дж. Рост
OpenGL. Трехмерная графика и язык программирования шейдеров.

В электронном виже сами найдете, уважаемый.
И вообще, не нарушайте авторские права. 😉


 
ANTPro ©   (2006-09-28 17:21) [5]

Из четырех указанных книг у меня есть только одна 🙁 хотя ожидается расширение моей библиотеки (до 10гб)

Краснов М. Open GL Графика в проектах Delphi.pdf


 
RzCoDer ©   (2006-09-28 17:40) [6]

RedBook http://www.mirgames.ru/download.php?id=49d87bde42cf2b1583d75e0a6588d54a


 
@!!ex ©   (2006-09-28 18:27) [7]

ANTPro ©   (28. 09.06 17:21) [5]

> Из четырех указанных книг у меня есть только одна 🙁

Фича в том, что Краснов вроде разрешил свою книгу публиковать в цифровом виде, поэтому ее и полно везде.

ANTPro ©   (28.09.06 17:21) [5]

> хотя ожидается расширение моей библиотеки (до 10гб)

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


 
ANTPro ©   (2006-09-28 18:42) [8]

@!!ex ©   (28.09.06 18:27) [7]
Еще один …
То что уже есть можно глянуть на моем сайте


 
@!!ex ©   (2006-09-28 18:52) [9]

ANTPro ©   (28. 09.06 18:42) [8]
Думаю нас будет много. :))
Боюсь что я не в состоянии скачать 10 ггб….
Поскольку это мне обойдется примерно в 3000$. :))


 
ANTPro ©   (2006-09-28 18:55) [10]

Удалено модератором


 
@!!ex ©   (2006-09-28 18:58) [11]

Удалено модератором


 
Ketmar ©   (2006-09-28 19:05) [12]

Удалено модератором


 
ANTPro ©   (2006-09-28 19:15) [13]

Удалено модератором


 
Ketmar ©   (2006-09-28 19:18) [14]

Удалено модератором


 
XProger ©   (2006-09-28 19:35) [15]

http://libray. narod.ru/Program/DOpenGL/index.html


Каталог — ЭБС Айбукс.ру

Год издания (указанный и младше)20252021202020192018201720162015201420132012201120102009200820072006200520042003200220012000199919981997199619951994199319921991199019891988198619231906384Дополнительная литератураИздание для досугаКурс лекцийМетодическое пособиеМонографияНаучно-популярное изданиеНаучное изданиеПериодическое изданиеПрактикумПрактическое изданиеПрактическое издание на иностранных языкахСборникСловарьСправочное пособиеУчебникУчебно-методическое пособиеУчебное пособиеХрестоматияХудожественная литератураАгентство Научных Изданий (Москва)Ад Маргинем Пресс (Москва)Аква-Терм (Москва)Алетейя (Санкт-Петербург)Альфа-М (Москва)Альфа-Пресс (Москва)Антология (Санкт-Петербург)Аспект Пресс (Москва)БАТиП (Санкт-Петербург)Беларуская навука (Минск)БХВ-Петербург (Санкт-Петербург)ВАКО (Москва)ВГИК (Москва)ВЕЛТ (Москва)Весь Мир (Москва)Вече (Москва)ВЛАДОС-ПРЕСС (Москва)Волгоградский государственный архитектурно-строительный университет (Волгоград)Воронежский университет инженерных технологий (Воронеж)Восточная книга (Москва)Восточно-Европейский Институт Психоанализа (Санкт-Петербург)Время (Москва)Вузовский учебник (Москва)ВШЭ (Москва)Высшая школа (Москва)Вышэйшая школа (Минск)Вятский государственный гуманитарный университет (Киров)Гангут (Санкт-Петербург)Генезис (Москва)ГИОРД (Санкт-Петербург)Горная книга (МГГУ) (Москва)Горячая Линия–Телеком (Москва)Далькнига (Владивосток)Дашков и К (Москва)Дело РАНХиГС (Москва)Деловой стиль (Москва)ДМК Пресс (Москва)ЕАОИ (Москва)Зерцало-М (Москва)Златоуст (Санкт-Петербург)Издательско-полиграфическая ассоциация высших учебных заведений (Санкт-Петербург)Издательство «Дмитрий Сечин» (Москва)Издательство В. Секачев (Москва)Издательство Ивана Лимбаха (Санкт-Петербург)Инcтитут общегуманитарных исследований (Москва)Институт мировых цивилизаций (Москва)Интермедиатор (Москва)Интермедия (Санкт-Петербург)Инфотропик Медиа (Москва)Инфра-Инженерия (Москва)Инфра-М (Москва)ИТ Медиа (Санкт-Петербург)ИЦ РИОР (Москва)Капитал (Москва)КАРО (Санкт-Петербург)Квазар (Москва)Квант Медиа (Москва)Кемеровский государственный институт культуры (Кемерово)Кемеровский технологический институт пищевой промышленности (Кемерово)Когито-Центр (Москва)Корвет (Москва)Креативная экономика (Москва)КУРС (Москва)Лаборатория знаний (Москва)Логос (Москва)Магистр (Москва)Машиностроение (Москва)МГТУ им. Н.Э. Баумана (Москва)Медиамузыка (Москва)Медицинская литература (Москва)Международные отношения (Москва)Металлургиздат (Москва)МИСИ—МГСУ (Москва)Московский государственный университет (Москва)Научный консультант (Москва)Национальный Открытый Университет ИНТУИТ (Москва)Новосибирский государственный аграрный университет (Новосибирск)Новосибирский государственный технический университет (Новосибирск)Норма (Москва)Омега-Л (Москва)Оренбургский государственный университет (Оренбург)ПГПУ (Пенза)Пер Сэ (Москва)Питер (Санкт-Петербург)Пожарная книга (Москва)Политическая энциклопедия (Москва)Попурри (Минск)Прогресс-Традиция (Москва)Прометей (Москва)Проспект (Москва)Проспект Науки (Санкт-Петербург)РИПО (Минск)РИТМ (Москва)РОСМЭН (Москва)Российская таможенная академия (Москва)Российский государственный гуманитарный университет (Москва)Российский государственный социальный университет (Москва)Российский государственный университет правосудия (Москва)Русское слово (Москва)СВЕН (Санкт-Петербург)Сибирский Федеральный Университет (Красноярск)Синергия (Москва)Скифия (Санкт-Петербург)СО РАН (Новосибирск)СОЛОН-ПРЕСС (Москва)Социум (Челябинск)СПбГИПСР (Санкт-Петербург)СПбКО (Санкт-Петербург)Спорт (Москва)Спутник + (Москва)Ставропольский государственный аграрный университет (АГРУС) (Ставрополь)Статут (Москва)Страта (Санкт-Петербург)Стрелка Пресс (Москва)Студия Артемия Лебедева (Москва)ТГУ (Томск)Текст (Москва)Теплотехник (Москва)Теревинф (Москва)ТетраСистемс (Минск)Техносфера (Москва)Троицкий мост (Санкт-Петербург)ТУСУР (Томск)Университетская книга (Москва)Федеральный научный центр физической культуры и спорта (Москва)Феникс (Ростов-на-Дону)Финансы и статистика (Москва)Флинта (Москва)Фолиант (Санкт-Петербург)Форум (Москва)ХИМИЗДАТ (Санкт-Петербург)Центр Сохранения Культурного Наследия (Санкт-Петербург)ЦИПСиР (Москва)Эдитус (Москва)Эко-Вектор (Санкт-Петербург)Эксмо (Москва)Эксперт-Наука (Владивосток)Энергия (Москва)Энтропос (Ставрополь)Юникс (Санкт-Петербург)Юнити (Москва)Юр-ВАК (Москва)Юридический центр-Пресс (Санкт-Петербург)Юстицинформ (Москва)

kniga — Стр 35

21. Никулин Е.А. Компьютерная геометрия и алгоритмы машинной графики. – СПб.: БХВ-Петербург, 2003. – 560 с.

22.Ньюмен У., Спрул Р. Основы интерактивной машинной графики. –

М.: Мир, 1976. – 574 с.

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

24.Осипов Д. Графика в проектах Delphi. – СПб.: Символ-Плюс, 2008.

–648 с.

25.Петровичев Е.И. Компьютерная графика: Учебное пособие. – М.: Изд-во Моск. гос. горного ун-та, 2003. – 207 с.

26.Поляков А.Ю., Бруснецов В.А. Методы и алгоритмы компьютерной графики в примерах на Visual C++. – СПб.: БХВ-Петербург, 2003. – 547 с.

27.Порев В.М. Компьютерная графика. – СПб.: БХВ-Петербург, 2002.

–432 с.

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

Мир, 1989. – 512 с.

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

ки. – М.: Мир, 2001. – 604 с.

30.Романюк О.Н. Комп’ютерна графіка: Навч. посібн. – Вінниця:

ВДТУ, 2001. – 130 с.

31.Сиденко Л.А. Компьютерная графика и геометрическое моделирование: Учеб. пособие для вузов. – СПб.: Питер, 2008. – 220 с.

32.Тихомиров Ю.В. OpenGL. Программирование трехмерной графики. – СПб.: БХВ-Петербург, 2002. – 304 с.

33.Тюкачев Н.А., Илларионов И.В., Хлебостроев В.Г. Программирование графики в Delphi. – СПб.: БХВ-Петербург, 2008. – 784 с.

34.Фоли Дж., ван Дэм А. Основы интерактивной машинной графики:

В 2 кн. – М.: Мир, 1987.

35.Херн Д., Бейкер М. Компьютерная графика и стандарт OpenGL. –

М.: Вильямс, 2005. – 1158 с.

36.Хилл Ф. OpenGL. Программирование компьютерной графики. –

СПб.: Питер, 2002. – 1088 с.

37.Шикин Е.В., Плисс А.И. Кривые и поверхности на экране компьютера. – М.: Диалог МИФИ, 1996. – 240 с.

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

39.Эгрон Д. Синтез изображений. Базовые алгоритмы. – М.: Радио и связь, 1993. – 216 с.

40.Эйнджел Э. Интерактивная компьютерная графика. Вводний курс на

LearnOpenGL — введение

Поскольку вы приехали сюда, вы, вероятно, захотите изучить внутреннюю работу компьютерной графики и делать все то, что делают крутые дети, самостоятельно. Делать что-то самому — это очень весело и находчиво, и это дает вам хорошее понимание программирования графики. Однако есть несколько моментов, которые необходимо учесть перед тем, как отправиться в путешествие.

Предварительные требования

Поскольку OpenGL является графическим API, а не собственной платформой, для работы ему требуется язык, и выбранный язык — C ++ .Поэтому для этих глав требуется хорошее знание языка программирования C ++ . Тем не менее, я попытаюсь объяснить большинство используемых концепций, включая расширенные темы C ++ , где это необходимо, поэтому не обязательно быть экспертом в C ++ , но вы должны быть в состоянии написать больше, чем просто 'Hello World Программа . Если у вас нет большого опыта работы с C ++ , я могу порекомендовать бесплатные руководства на www.learncpp.com.

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

Структура

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

Чтобы упростить понимание концепций и придать им дополнительную структуру, книга содержит блоков , блоков кода , цветных подсказок и ссылок на функции .

Ящики

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

Код

На веб-сайте вы найдете множество небольших фрагментов кода, которые расположены в темно-серых прямоугольниках с выделенным синтаксисом кодом, как вы можете видеть ниже:

 
// Это поле содержит код
  

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

Цветовые оттенки

Некоторые слова выделены другим цветом, чтобы было понятно, что эти слова передают особое значение:

  • Определение: зеленые слова определяют определение, то есть важный аспект / название того, что вы, вероятно, будете слышать чаще.
  • Структура программы: красные слова определяют имена функций или классов.
  • Переменные : синие слова определяют переменные, включая все константы OpenGL.

Ссылки на функции OpenGL

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

Теперь, когда вы немного познакомились со структурой сайта, перейдите в раздел «Начало работы», чтобы начать свое путешествие в OpenGL!

Обзор OpenGL

OpenGL — отраслевой фундамент высокопроизводительной графики

Самый распространенный стандарт графики

OpenGL — это лучшая среда для разработки портативных интерактивных приложений с 2D- и 3D-графикой.С момента своего появления в 1992 году OpenGL стал наиболее широко используемым и поддерживаемым в отрасли интерфейсом программирования приложений (API) 2D и 3D графики, в результате чего тысячи приложений доступны на самых разных компьютерных платформах. OpenGL способствует инновациям и ускоряет разработку приложений за счет включения широкого набора функций визуализации, наложения текстур, специальных эффектов и других мощных функций визуализации. Разработчики могут использовать возможности OpenGL на всех популярных платформах настольных компьютеров и рабочих станций, обеспечивая широкое развертывание приложений.

Высокое качество изображения и производительность

Любое приложение для визуальных вычислений, требующее максимальной производительности — от 3D-анимации до САПР и визуального моделирования — может использовать высококачественные и высокопроизводительные возможности OpenGL. Эти возможности позволяют разработчикам на различных рынках, таких как телерадиовещание, CAD / CAM / CAE, развлечения, медицинская визуализация и виртуальная реальность, создавать и отображать невероятно привлекательную 2D и 3D графику.

Преимущества, определяемые разработчиками

  • Отраслевой стандарт
    Спецификация OpenGL разрабатывается независимым консорциумом, Советом по обзору архитектуры OpenGL.Благодаря широкой отраслевой поддержке OpenGL является единственным по-настоящему открытым, независимым от поставщиков многоплатформенным графическим стандартом.
  • Стабильная
    Реализации OpenGL доступны уже более семи лет на самых разных платформах. Дополнения к спецификации хорошо контролируются, а предлагаемые обновления объявляются вовремя, чтобы разработчики могли принять изменения. Требования обратной совместимости гарантируют, что существующие приложения не устареют.
  • Надежный и портативный
    Все приложения OpenGL обеспечивают согласованные результаты визуального отображения на любом оборудовании, совместимом с OpenGL API, независимо от операционной системы или оконной системы.
  • Развитие
    Благодаря тщательному и перспективному дизайну OpenGL обеспечивает доступ к новым аппаратным инновациям через API через механизм расширения OpenGL. Таким образом, инновации появляются в API своевременно, что позволяет разработчикам приложений и поставщикам оборудования включать новые функции в свои обычные циклы выпуска продуктов.
  • Масштабируемость
    Приложения на основе API OpenGL могут работать в различных системах, от бытовой электроники до ПК, рабочих станций и суперкомпьютеров. В результате приложения могут масштабироваться до любого класса компьютеров, на который разработчик выберет целевой объект.
  • Простота использования
    OpenGL хорошо структурирована, имеет интуитивно понятный дизайн и логические команды. Эффективные процедуры OpenGL обычно приводят к созданию приложений с меньшим количеством строк кода, чем те, которые составляют программы, созданные с использованием других графических библиотек или пакетов. Кроме того, драйверы OpenGL инкапсулируют информацию о базовом оборудовании, освобождая разработчика приложений от необходимости разрабатывать определенные функции оборудования.
  • Хорошо документировано
    Было опубликовано множество книг об OpenGL, и большое количество примеров кода легко доступно, что делает информацию об OpenGL недорогой и легкой для получения.

Конвейер программирования визуализации OpenGL

OpenGL работает с данными изображений, а также с геометрическими примитивами.

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

Каждая соответствующая реализация OpenGL включает в себя полный набор функций OpenGL. Четко определенный стандарт OpenGL имеет языковые привязки для C, C ++, Fortran, Ada и Java. Все лицензированные реализации OpenGL исходят из единой спецификации и документа с привязкой к языку и должны пройти ряд тестов на соответствие.Приложения, использующие функции OpenGL, легко переносятся на широкий спектр платформ, что обеспечивает максимальную продуктивность программистов и сокращает время выхода на рынок.

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

Доступен повсюду
Поддерживается на всех рабочих станциях UNIX® и поставляется в стандартной комплектации с каждым ПК с Windows 95/98/2000 / NT и MacOS, никакой другой графический API не работает на более широком спектре аппаратных платформ и программных сред. OpenGL работает во всех основных операционных системах, включая Mac OS, OS / 2, UNIX, Windows 95/98, Windows 2000, Windows NT, Linux, OPENStep и BeOS; он также работает со всеми основными оконными системами, включая Win32, MacOS, Presentation Manager и X-Window System. OpenGL вызывается из Ada, C, C ++, Fortran, Python, Perl и Java и предлагает полную независимость от сетевых протоколов и топологий.

Архитектура для гибкости и дифференциации: расширения
Хотя спецификация OpenGL определяет конкретный конвейер обработки графики, поставщики платформ могут адаптировать конкретную реализацию OpenGL для удовлетворения уникальных требований к стоимости и производительности системы. Отдельные вызовы могут выполняться на выделенном оборудовании, запускаться как программные процедуры на стандартном системном ЦП или реализовываться как комбинация выделенных аппаратных и программных процедур.Такая гибкость реализации означает, что аппаратное ускорение OpenGL может варьироваться от простого рендеринга до полной геометрии и широко доступно на всем, от недорогих ПК до высокопроизводительных рабочих станций и суперкомпьютеров. Разработчикам приложений гарантируется единообразное отображение результатов независимо от платформы, на которой реализована среда OpenGL.

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

Многие расширения OpenGL, а также расширения для связанных API, таких как GLU, GLX и WGL, были определены поставщиками и группами поставщиков. Реестр расширений OpenGL поддерживается SGI и содержит спецификации для всех известных расширений, написанные как модификации соответствующих документов спецификаций. Реестр также определяет соглашения об именах, рекомендации по созданию новых расширений и написанию подходящих спецификаций расширений и другую сопутствующую документацию.

Иерархия API
  • Приложения OpenGL используют оконную систему, механизм ввода и событий
  • GLU поддерживает квадрики, NURBS, сложные многоугольники, матричные утилиты и многое другое

Эта диаграмма демонстрирует взаимосвязь между OpenGL GLU и API окон.

Основы передовых API

Ведущие разработчики программного обеспечения используют OpenGL с его надежными библиотеками рендеринга в качестве основы 2D / 3D графики для высокоуровневых API. Разработчики используют возможности OpenGL для предоставления дифференцированных, но широко поддерживаемых решений для вертикального рынка. Например, Open Inventor предоставляет кросс-платформенный пользовательский интерфейс и гибкий граф сцены, что упрощает создание приложений OpenGL.IRIS Performer

Управление

Совет по обзору архитектуры OpenGL (ARB) был независимым консорциумом, образованным в 1992 году, который управлял будущим OpenGL, предлагая и одобряя изменения в спецификации, новые выпуски и тестирование на соответствие. В сентябре 2006 года ARB стал Рабочей группой OpenGL в рамках консорциума Khronos Group по открытым стандартным API.

Комитет по характеристике производительности OpenGL, другая независимая организация, создает и поддерживает тесты OpenGL и публикует результаты этих тестов на своем веб-сайте:
http: // www. specbench.org/benchmarks.html#gwpg.

Продолжение инноваций

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

Приложения и игры OpenGL

OpenGL — это широко распространенный стандарт для потребительских и профессиональных 3D-приложений на всех основных платформах ОС.

Безопасность | Стеклянная дверь

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

Nous aider à garder Glassdoor sécurisée

Nous avons reçu des activités suspectes venant de quelqu’un utilisant votre réseau internet. Подвеска Veuillez Patient que nous vérifions que vous êtes une vraie personne. Вотре содержание apparaîtra bientôt. Si vous continuez à voir ce message, veuillez envoyer un электронная почта à pour nous informer du désagrément.

Unterstützen Sie uns beim Schutz von Glassdoor

Wir haben einige verdächtige Aktivitäten von Ihnen oder von jemandem, der in ihrem Интернет-Netzwerk angemeldet ist, festgestellt.Bitte warten Sie, während wir überprüfen, ob Sie ein Mensch und kein Bot sind. Ihr Inhalt wird в Kürze angezeigt. Wenn Sie weiterhin diese Meldung erhalten, informieren Sie uns darüber bitte по электронной почте: .

We hebben verdachte activiteiten waargenomen op Glassdoor van iemand of iemand die uw internet netwerk deelt. Een momentje geduld totdat, мы исследовали, что u daadwerkelijk een persoon bent. Uw bijdrage zal spoedig te zien zijn. Als u deze melding blijft zien, электронная почта: om ons te laten weten dat uw проблема zich nog steeds voordoet.

Hemos estado detectando actividad sospechosa tuya o de alguien con quien compare tu red de Internet. Эспера mientras verificamos que eres una persona real. Tu contenido se mostrará en breve. Si Continúas recibiendo este mensaje, envía un correo electrónico a para informarnos de que tienes problemas.

Hemos estado percibiendo actividad sospechosa de ti o de alguien con quien compare tu red de Internet. Эспера mientras verificamos que eres una persona real.Tu contenido se mostrará en breve. Si Continúas recibiendo este mensaje, envía un correo electrónico a para hacernos saber que estás teniendo problemas.

Temos Recebido algumas atividades suspeitas de voiceê ou de alguém que esteja usando a mesma rede. Aguarde enquanto confirmamos que Você é Uma Pessoa de Verdade. Сеу контексто апаресера эм бреве. Caso продолжить Recebendo esta mensagem, envie um email para пункт нет informar sobre o проблема.

Abbiamo notato alcune attività sospette da parte tua o di una persona che condivide la tua rete Internet.Attendi mentre verifichiamo Che sei una persona reale. Il tuo contenuto verrà visualizzato a breve. Secontini Visualizzare questo messaggio, invia un’e-mail all’indirizzo per informarci del проблема.

Включите файлы cookie и перезагрузите страницу.

Это автоматический процесс. Ваш браузер в ближайшее время перенаправит вас на запрошенный контент.

Подождите до 5 секунд…

Перенаправление…

Заводское обозначение: CF-102 / 627572718c9b3a56.

Расширенное программирование графики с использованием OpenGL

«Я использую методы, описанные в этой книге, с момента их появления на SIGGRAPH много лет назад. Эти заметки, преобразованные в эту превосходную книгу, стали наиболее существенным справочником по передовым методам в OpenGL. Каждый уголок предмета анализируется с достаточной детализацией для эксперта, но также очень удобочитаемым для новичка. Поздравляем Дэвида и Тома за предоставленные отличные справочные материалы по OpenGL! »- Дэйв Шрейнер, Silicon Graphics, Inc., соавтор OpenGL Programming Guide
« Вы можете подумать, что знаете OpenGL. Как инженер-программист с десятилетним опытом работы с OpenGL, я думал, что да.Однако эта книга быстро убедила меня, что я сильно ошибался. Дэвид Блайт и Том Макрейнольдс научили меня многому, чего я не знал, и в процессе улучшили продукты моей компании. Это книга для энтузиастов компьютерной графики, как любителей, так и профессионалов. Если вы используете OpenGL в своей работе, Advanced Graphics Programming с использованием OpenGL будет вашим постоянным спутником. Не забудьте, однако, получить свою копию — моя копия ни при каких обстоятельствах не покидает мой стол! »- Ян Эшдаун, президент, byHeart Consultants Limited
« Сегодня действительно полезная и интерактивная графика доступна на доступных компьютерах. Хотя прогресс в области аппаратного обеспечения был впечатляющим, широкое распространение знаний в области программного обеспечения происходило медленнее. Информацию о продвинутых методах, помимо тех, которые изучаются во вводных текстах по компьютерной графике, не так просто получить, как недорогое оборудование. Эта книга выводит программиста графики за рамки основ и знакомит его с передовыми знаниями, которые трудно получить за пределами интенсивной рабочей среды компьютерной графики. Книга посвящена графическим техникам, не требующим особого оборудования или специальных графических библиотек, написанных в понятном стиле и делающих полезные вещи.Он охватывает графику, которая плохо описана в вашем старом учебнике графики. Но он также идет дальше, обучая вас применять эти методы в реальных приложениях, удовлетворяя потребности реального мира. Подчеркивает алгоритмическую сторону компьютерной графики с упором на практическое применение и предоставляет полезные методы для решения реальных проблем. Служит введением в приемы, которые трудно получить за пределами интенсивной работы с компьютерной графикой. Сложные и новые методы программирования реализованы на языке C с использованием библиотеки OpenGL, включая: охват цвета и освещения; наложение текстуры; смешивание и композитинг; сглаживание; обработка изображений; спецэффекты; природный феномен; художественные и нефотореалистичные приемы и многие другие.В книге используются фрагменты кода, и полномасштабные примеры программ практически для каждого алгоритма доступны по адресу www.mkp.com/opengl. « Gamedev.net

Предисловие: Что такое OpenGL? | OpenGLBook.com

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

В предисловии мы рассмотрим следующие темы: * Зарождение компьютеров и компьютерной графики * Что такое OpenGL и как он появился * Как работает компьютерная графика * Требования к аппаратному и программному обеспечению для этой книги

Внимание:

Если вы хотите сразу заняться программированием графики, не читая это длинная история, вы можете сразу перейти к разделу «требования» ниже, прочтите это и начните следующую главу.Однако я должен подчеркнуть, что глубокое понимание истории вычислений, компьютерной графики, и OpenGL может быть важен для понимания будущих разработок.

При помощи письма, рисования или языка тела визуализация всегда была важный игрок в передаче информации и ведении хроники истории. В требование визуальной обратной связи настолько важно, что трудно признать существование чего-то, если вы этого не видите. Бактерии, например, были чисто умозрительно до их визуального открытия в семнадцатом веке Антони ван Левенгук, которая изобрела микроскоп, но стала неотъемлемой частью часть современной науки.

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

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

Дисплей: электронно-лучевые трубки

В 1897 году Фердинанд Браун изобрел ЭЛТ (катодно-лучевую трубку) в Германии в качестве тип вакуумной лампы, предназначенной для вывода изображения на экран. Ты сами видели или использовали их в виде телевизоров со стеклянной трубкой и компьютерные мониторы, которые до недавнего времени были нормой.

ЭЛТ уже использовались для вывода на телевидение и осциллографы, но никому не приходило в голову объединить эту технологию с компьютерами.Первый раз они использовались для отображения компьютерной продукции в 1951 году в Массачусетском технологическом институте (Массачусетс Технологический институт), где компьютер Whirlwind был разработан как объединенный Симулятор полета ВМС США. ЭЛТ позволяли операторам мгновенно видеть вывод компьютерной программы без необходимости интерпретировать перфокарты, ряды лампы или просматривайте стопки распечаток.

Хотя сам проект Whirlwind не был очень успешным из-за высокой стоимости, это был важный шаг в направлении компьютерной графики. представить ЭЛТ как жизнеспособное компьютерное устройство вывода.CRT стал важным игроком в развитии компьютерной графики и оставался устройство вывода предпочитали более 50 лет, пока его не заменили более новым плоские панельные технологии.

Первые взаимодействия

Хотя ЭЛТ позволяли компьютерам отображать свою продукцию, в основном это был текст, просто предназначалось для считывания текущего состояния компьютера. Это осталось правдой некоторое время, так как никто не думал о компьютере иначе, как чистое вычислительное устройство.Только в 1961 году Иван Сазерленд разработал компьютерная программа под названием Sketchpad для его диссертации в Массачусетском технологическом институте, которая изменила как мы смотрим на компьютеры драматично.

Программа Sketchpad

Сазерленда позволяла пользователям рисовать геометрические формы на ЭЛТ со световым пером в реальном времени, что было новаторским в время и остается замечательным даже спустя много лет. Это не только определило компьютер графика, но также представил предшественник графического интерфейса пользователя (произносится как «липкий», означает графический интерфейс пользователя) и заложил основы того, что должно было стала концепцией, известной как объектно-ориентированное программирование. Sketchpad создал сдвиг парадигмы в том, что компьютеры больше не были просто вычислением чисел устройства, но также могут использоваться для отображения геометрических фигур.

К вашему сведению: компьютерная графика в реальном времени

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

В 1968 году Иван Сазерленд и Боб Спроул создали еще один технологический подвиг, а именно «Дамоклов меч», предшественник того, что мы теперь называем виртуальным реальность.Эта система отображала простые трехмерные каркасные модели. пользователя через гарнитуру, подвешенную к потолку из-за ее веса. Это в сам по себе, возможно, был одним из первых (если не первым) когда форма 3D графика была создана компьютером.

Меньше, быстрее, дешевле

Конечно, технологии перешли от перфокарт к интерактивным. графика; компьютеры постепенно превратились из массивных машин в маленькие устройства, которыми вы пользуетесь каждый день.

С 1940-х до середины 1950-х годов компьютеры использовали электронные лампы для обработки и займет целые комнаты.Вакуумная трубка — это устройство, которое может изменить электронный сигнал, так или иначе, например, переключение, которое является функция, которая необходима для вычислений. Компоненты, необходимые для сборки Компьютеры были большими и горячими на ощупь. Ни одна из машин, построенных в эта эпоха была такой же, и поэтому их программы не были совместимы с какими-либо другая машина. Эту эпоху обычно называют первого поколения компьютеры и представляет собой первый шаг в современной информатике.Это машины, упомянутые в первом разделе, которые использовали перфокарты и лампы в качестве устройства вывода, поэтому они мало способствовали развитию компьютерных графика.

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

Но сами транзисторы не были Святым Граалем для вычислений, и в в середине 1960-х годов появилась новая технология под названием интегральная схема. третьего поколения компьютеров. Интегральные схемы уменьшили определенную функция, которая обычно выполнялась бы рядом отдельных транзисторы на одном кристалле. В третьем поколении многие компьютеры оснащались такими устройствами, как клавиатура, мониторы и новый тип программного обеспечения под названием Операционная система, которое позволяло компьютеру работать несколько программ.Важная операционная система той эпохи называлась UNIX, что повлияет на многие (если не на все) последующие изменения в операционной Системы.

В 1971 году произошел крупный прорыв в области вычислений с появлением изобретение микропроцессора корпорацией Intel, открывшее четвертого поколения компьютеров. В то время как ЦП (центральные процессоры) обычно это были платы с припаянными на них интегральными схемами, Микропроцессор Intel 4004 содержал все эти функции на одном чип.Из-за более дешевого производственного процесса компьютер постепенно перешел на из специализированного устройства, используемого крупными компаниями и правительствами, в что-то гораздо более доступное для масс. В настоящее время мы все еще находимся в четвертое поколение компьютеров, так как мы еще не отошли от микропроцессоров.

Персональные компьютеры

Первые персональные компьютеры начали появляться в середине-конце 1970-х годов, но считались машинами энтузиастов для любителей.Это несколько изменилось с выпуск Apple II от Apple Computer в 1977 году и PET от Commodore Международный. Эти машины популяризировали концепцию компьютеров для домой, но не мог предложить слишком многого в плане компьютерной графики.

Это несколько изменилось в 1980-х годах, когда такие технологии, как графический интерфейс представлен на рынке персональных компьютеров. Первая специализированная графика в эту эпоху также начали появляться дополнительные карты, в частности CGA (Color Graphics Adapter) от IBM была первой цветной видеокартой для IBM PC. платформа, которая проложит путь для будущих разработок за счет стандартизации метод рисования компьютерной графики, но мало что предлагает в плане графики возможности.

В 1970-х и 1980-х годах большинство видеоигр запускалось на специализированных системах. редко использовали компьютерную анимацию, а 3D-графика в реальном времени только для целей визуализации, поскольку не было потребительского оборудования, которое достаточно быстро. Эти годы были известны своими многочисленными новинками в области потребительского оборудования, но только в конце 1980-х — начале 1990-х компьютерные игры сильное влияние на платформу ПК и реальный толчок к лучшему и лучшему внешнему виду началось выполнение графики в реальном времени.

Одна из компьютерных игр, которая расширила возможности аппаратного обеспечения Днем был Wolfenstein 3D, шутер от первого лица, выпущенный id Software в 1992 году. Хотя Wolfenstein не был полностью 3D, он определил стандарт будущего 3D. компьютерные игры. Лишь год спустя id Software выпустили Doom, свой первый настоящий 3D игра. Впервые игрок мог исследовать свое окружение через использование лестниц и лифтов без привязки к определенной высота. За этим последовало множество игр, имитирующих внешний вид Doom, и метко окрестили «дум-клонами».»Doom использовал программный рендерер для рендеринга графика в реальном времени на экране, как и все другие игры раннего 1990-е, но это скоро изменилось.

Silicon Graphics (обычно именуемая SGI) была компанией, основанной в 1981 году. который специализировался на 3D компьютерной графике и разрабатывал программное обеспечение и оборудование специально для этого. Одной из программных библиотек, разработанных SGI, была IRIS. GL (графическая библиотека интегрированной системы обработки растровых изображений), используемая для создания 2D и 3D-графика на высокопроизводительных рабочих станциях SGI. Эта библиотека была о превратиться в одну из самых важных разработок компьютерной графики из 1990-е гг.

В начале 1990-х SGI была лидером на рынке рабочих станций для 3D-графики. из-за их высокопроизводительного оборудования и простого в использовании программного обеспечения. ИРИС GL была де-факто стандартной отраслевой библиотекой 3D-графики, затмевая все остальные разработки и попытки стандартизировать интерфейс 3D-графики. Но несмотря на из-за своей популярности IRIS GL имел одну серьезную проблему: это была проприетарная система. слились с собственными платформами SGI, и конкуренты приближались к SGI преимущество с их собственными API (интерфейс прикладного программирования).

Сделав смелый шаг, SGI очистила IRIS GL, удалила все функции, которые не работали. относятся к компьютерной графике и опубликовали его в 1992 году как OpenGL. (Открытая графическая библиотека), кроссплатформенный стандартизированный API для реального времени компьютерная графика.

Поставщики программного обеспечения должны будут предоставить свои собственные реализации OpenGL. стандарт на своих платформах, и программы поставщиков оборудования, которые позволили OpenGL для взаимодействия с базовым графическим оборудованием, называемым «драйверами устройств».»SGI уже предоставили это своим клиентам вместе с несколькими высокоуровневыми API в то время как другие поставщики догнали этот новый и простой в использовании API.

Гибкость

Поскольку SGI не предоставила никакого фактического исходного кода, а просто спецификацию как должен работать API. Появилась абстракция, позволяющая аппаратному обеспечению а производители программного обеспечения — большая свобода в выборе способа реализации OpenGL; это уровень абстракции присутствует и сегодня. Из-за этого OpenGL поддерживается на многих платформах и устройствах; на самом деле, вам будет тяжело найти современную платформу без хотя бы некоторого уровня поддержки OpenGL.

Но, пожалуй, самое большое преимущество OpenGL для разработчиков — это поддержка расширений. Если спецификация OpenGL не поддерживает для определенных функций поставщик оборудования или программного обеспечения может решить добавить сами эти функции за счет использования расширений. Многие производители выберите это, и их расширения можно будет отличить по их префиксам, например NV_ для NVIDIA, AGL_ для Apple и так далее. Расширения могут предоставить мощная функциональность, но обычно специфична для реализации поставщика OpenGL.

Затем вы можете вызвать функции, предоставляемые этими расширениями, загрузив их в вашей программе через механизм загрузки расширений, который извлекает указатель на функцию. Однако этот механизм загрузки не стандартизирован, поэтому, к сожалению, каждая платформа имеет свои собственные специфические функции загрузки расширений. Это ограничение наиболее очевиден на платформе Microsoft Windows, где заголовок OpenGL файлы не обновлялись с OpenGL версии 1.1, даже в последней Комплекты для разработки Windows. Будет больше деталей о том, почему это так, далее в этой главе.

Открытый стандарт

Название «OpenGL» было выбрано не просто потому, что оно звучало как хорошее модное слово, в нем также есть реальный смысл. Поскольку OpenGL — это развивающийся спецификация, кто-то должен решить, что в нее входит. Итак, в 1992 году АРБ (Совет по обзору архитектуры OpenGL), состоящий из нескольких профильных поставщиков программного и аппаратного обеспечения, которые коллективно определили будущее стандарт OpenGL через систему голосования. Помимо определения того, что нового функции вошли в спецификацию OpenGL, она также решила, какие расширения будут продвигаться, чтобы стать основными функциями следующего выпуска OpenGL.

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

Для справки: образцы тестов на соответствие

Чтобы увидеть некоторые результаты тестирования на соответствие, посетите Mesa3D.org и щелкните Соответствие Заголовок тестирования.

OpenGL быстро стал ведущим в отрасли графическим API в реальном времени. в основном единственный, доступный на нескольких платформах.

OpenGL в Windows

OpenGL уже внедрялся на рабочих станциях на базе UNIX, когда Microsoft вышла на рынок со своей операционной системой для рабочих станций Windows NT в 1993 году. Windows NT была выпущена как прямой конкурент UNIX с сетевым интерфейсом (NT акроним, означающий сетевые технологии) и 32-разрядную поддержку оборудования.Windows NT представленные функции, которые все еще используются сегодня, такие как Win32 API для создание приложений Windows. Но не имея встроенной библиотеки 3D-графики В своей системе Microsoft пообещала добавить поддержку OpenGL в Windows NT.

Microsoft наконец добралась до реализации OpenGL в Windows NT 3. 5, которая был выпущен в 1994 году, но реализовал OpenGL только до такой степени, что они могли заявить о совместимости, реализовав образец реализации, предоставленный SGI в то время.Этот пример реализации должен был служить только в качестве демонстрация того, как можно реализовать OpenGL, и в качестве руководства для поставщиков. Излишне говорить, что эта реализация была ужасно медленной, поскольку она не оптимизированы, а графические ускорители для ПК практически отсутствовали. Фактически, эта проблема с производительностью была настолько очевидной, что существует проблема Microsoft. статья базы знаний (KB121282) предупреждение о том, что использование заставок OpenGL в NT 3.5 может замедлить работу вашего компьютера так как это занимало значительное время у процессора компьютера.

DirectX

Увидев возможности рынка видеоигр, Microsoft искала собственное 3D графический API для Windows, чтобы побудить разработчиков игр оставить DOS позади (Первая операционная система Microsoft) и разрабатывать игры исключительно для Windows. Их первой попыткой была WinG, которая просто передавала команды базовый интерфейс GDI (интерфейс графического устройства) и не предлагал 3D функциональность. Для этого Microsoft пришлось приобрести компанию под названием RenderMorphics в 1995 году, который создал API трехмерной графики под названием Reality Lab.Этот API был переименован и отправлен как Direct3D в SDK (Software Development Kit) называется DirectX, который также включает в себя несколько других API для разработки игр:

  • DirectDraw для быстрого рисования 2D-графики
  • DirectInput для ввода данных с джойстика
  • DirectPlay для работы в сети и коммуникации
  • DirectSound для воспроизведения звука

Первые версии Direct3D были неудобны для работы и разработчикам не спешили внедрять API.Это заставило Microsoft продолжать поддерживать OpenGL. одновременно прилагая много усилий к тому, чтобы сделать Direct3D конкурентоспособным API. Спецификация OpenGL 1.1 была реализована в Windows 95 и Windows. NT 4.0, и в нем был столь необходимый прирост производительности, хотя это был последний раз, когда реализация OpenGL от Microsoft была обновлена ​​в пользу собственного API.

Начало «войн API»

Хотя Microsoft всегда настаивала на том, что OpenGL лучше всего использовать для «профессиональных графика «, что означает САПР (автоматизированное проектирование) на рабочей станции, начинают получать распространение в видеоиграх — индустрии, которую Microsoft стремилась доминируют на платформе Windows с DirectX.Самый большой прорыв OpenGL пришел, когда влиятельный разработчик Джон Кармак из id Software перенес свой известная видеоигра Quake для использования OpenGL API в Windows и продемонстрировала разработчикам как легко это было сделать.

В декабре 1996 года Кармак опубликовал документ, в котором излагались его жалобы с API Direct3D. Он обозначил различия между API сравнение кода, требуемого обоими API для рисования треугольника на экране; OpenGL требовал всего четырех строк кода в его примерах, в то время как Direct3D требовал множество команд и заданий.

Прямой способ объяснения Кармака был настолько разрушительным для Direct3D. репутация, которую разработчик Direct3D Алекс Сент-Джон опубликовал в феврале 1997 года, защищая свой API, и, как ни странно, Microsoft признала недостатки. Он объяснил, что Direct3D был разработан с прямым доступом к имеется в виду оборудование, а не программное обеспечение, и что полученный интерфейс может не были красивыми, но они сделали свою работу. И снова Microsoft подтолкнула указывают на то, что OpenGL был библиотекой САПР и не поддерживался для потребительского типа оборудование в ближайшее время.

Этот ответ встревожил клетку SGI, и в июне 1997 года они выпустили свой собственный ответ на критику Св. Иоанна. В этом длинном документе описаны «некоторые из наиболее заметные недостатки конструкции и текущей реализации Direct3D «. Он отметил различия между двумя API с технической точки зрения. а не маркетинговые, и подробно остановился на упоминании Кармака простоты использования с большим количеством примеров кода.

Direct3D стал более удобным в использовании с версией 5.0, в которой удалены некоторые неудобные функции из API.На тот момент оба API были достаточно удобный и похожий по набору функций, но этот статус-кво должен был изменять.

Ошибка драйвера

Поскольку OpenGL и Direct3D зашли в тупик в Windows NT, Microsoft потребовалось край. Драйверы OpenGL были реализованы в Windows NT с помощью мини-клиента. Драйвер (MCD), который был низкоэффективным компромиссом между оборудованием и ПО, но самое простое решение для создания драйверов. MCD позволил поставщиков, чтобы выбрать те изделия, которые они хотели бы ускорить на своих оборудование, а остальное будет работать на предоставленной программной реализации (или наоборот).Microsoft получила необходимое преимущество, не допуская лицензирование MCD в Windows 95, что эффективно ограничивает OpenGL только программная реализация предоставлена ​​Microsoft.

Это решение было серьезным откатом для OpenGL, который пытался найти способ на потребительский рынок, не говоря уже о поставщиках оборудования, которые внедрял эти драйверы месяцами. К счастью, SGI предоставила решение который принесет драйверы оборудования в Windows 95, называемый Installable Client Драйвер (ICD).Фактически, этот тип реализации имел несколько величин. быстрее, чем модель драйвера MCD, так что это оказалось большим благословением в маскировка. Поставщики оборудования ухватились за эту возможность и быстро начали поставка драйверов. Вскоре после этого разработчики игр начали внедрять OpenGL в их игры, доказав, что это снова жизнеспособная альтернатива в Direct3D.

Развитие оборудования

В конце 1990-х OpenGL зарекомендовал себя как промышленный стандарт для 3D. компьютерная графика, не только для программ САПР, хотя это была единственная соперник на этом рынке.Компьютерные видеоигры, такие как Quake 2, Unreal и Half-Life в полной мере воспользовалась OpenGL, чтобы продемонстрировать весь свой потенциал и были широко популярны. Примерно в это же время появилась первая специализированная 3D-модель потребительского уровня. начало появляться графическое оборудование, навсегда изменившее индустрию видеоигр.

Одним из первых 3D-ускорителей была Voodoo Graphics от 3Dfx Interactive, высокопроизводительная дополнительная карта, которая установила стандарт, как только она появилась на рынке. Хотя были и другие дополнительные карты, такие как ATI 3D Rage и S3 ViRGE, Карта 3Dfx взорвала их всех как по производительности, так и по функциям.Вдобавок к этому 3Dfx предоставил собственный API для 3D-графики под названием Glide, в котором прямой доступ к базовому графическому оборудованию. В то время Glide был самый быстрый API в городе, но из-за того, что он зависел от производителя, он был стало устаревшим из-за конкурирующих API лишь несколько лет спустя. Тем не менее, Glide оказали влияние на отрасль, заставив другие API наверстать упущенное некоторое время.

NVIDIA вскоре догнала в 1999 году свою дополнительную карту GeForce 256, которую они называется GPU (графический процессор), который поддерживает совершенно новую технологию называется Transform & Lighting (обычно называемый T&L). T&L переместил вершину расчеты трансформации и расчеты освещения от центрального процессора компьютера к GPU. Основное преимущество графического процессора в том, что он выполняет операции с плавающей запятой. операции очень быстро, поскольку оборудование предназначено для этой задачи, в то время как ЦП специализируется на целочисленных и более универсальных операциях. 3Dfx никогда внедрили T&L, что в конечном итоге способствовало их упадку как функциональность была перенесена на GPU.

После банкротства 3Dfx NVIDIA приобрела большую часть ее интеллектуальной собственности. (включая хорошо известную технологию SLI), но не стал продолжением Voodoo линейку продуктов, и они не поддерживали ни одну из старых продуктов 3Dfx.В течение года 2000 г. единственными конкурентами, оставшимися на рынке графических процессоров, были NVIDIA с GeForce 2 и ATI с графическими процессорами серии Radeon 7000. Эти два поставщика предлагалась только поддержка OpenGL и Direct3D, освобождая игровое поле для эти API-интерфейсы, чтобы идти лицом к лицу.

FYI: программное обеспечение против оборудования

Когда мы говорим, что что-то является функциональностью программного обеспечения, это означает, что это выполняется на CPU вместо GPU. Когда мы говорим, что что-то аппаратное функциональность, это означает, что функция выполняется на выделенном оборудовании.Например, программный рендеринг выполняется исключительно через процессор и оборудование. рендеринг осуществляется исключительно на GPU.

В начале 2000-х годов производительность графического процессора росла экспоненциально по мере увеличения количества программного обеспечения. функции были перенесены на GPU. ЦП устарел для рендеринга в реальном времени 3D-графика, поскольку она не успевала за развитием GPU. Фактически, в текущем методе рендеринга 3D-графики центральное место было узким местом. что нужно было изобрести новые методы, чтобы обойти его использование.

Буферы

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

Новый метод появился в форме буферных объектов. Буферы существовали уже некоторое время в виде списков отображения и массивов вершин, но у каждого из них были свои недостатки.Списки отображения по-прежнему использовали непосредственный режим, а массивы вершин были хранятся в памяти системы, поэтому их нужно было передавать на GPU каждые один звонок.

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

FYI: буферы

В информатике буфер — это место в памяти, где хранятся временные данные. хранится. Когда мы закончим использовать эти данные, буфер будет удален и память готова к повторному использованию.

Шейдеры

В 2000 году Microsoft выпустила Direct3D 8.0, который поддерживал новый функция, называемая шейдерами. Шейдеры — это не более чем маленькие программы которые работают непосредственно на графическом процессоре, тем самым используя еще больше мощности графического процессора и перенос большей функциональности за пределы ЦП.Когда был выпущен Direct3D 8.0, Было анонсировано два типа шейдеров: вершинные шейдеры и пиксельные шейдеры.

Вершинный шейдер — это программа графического процессора, которая выполняется один раз для каждой вершины, назначен, а пиксельный шейдер — это программа графического процессора, которая выполняется один раз за пиксель. Шейдеры позволили повысить программируемость и производительность за счет устранение ЦП для многих задач, но их было очень сложно программировать из-за их синтаксис, который напоминал язык программирования ассемблера для процессора.

Microsoft осознала этот недостаток, и в 2003 году произошел крупный прорыв в шейдеры пришли в виде языка шейдеров высокого уровня (HLSL) с выпуск Direct3D 9.0. Этот новый язык позволил манипулировать шейдерами. на языке высокого уровня, синтаксис которого основан на C. На этом этапе шейдеры стал намного более пригодным для использования, и его применение было повсеместным. Вы многому научитесь подробнее о вершинных и пиксельных шейдерах в следующих главах, где мы подробно остановимся. о том, как всего этого добиться и как можно использовать шейдеры в собственных программах.

OpenGL застаивается

В приведенном выше абзаце не упоминается OpenGL по уважительной причине, а именно: OpenGL в то время не поддерживал шейдеры.OpenGL официально не поддерживать шейдеры до 2004 года с выпуском OpenGL 2.0 и одновременный выпуск OpenGL Shading Language (GLSL). Хотя расширения для использования шейдеров были широко доступны до 2004 г., они не входили в состав официальной спецификации и потребовалось несколько лет для правильной реализации.

OpenGL резко отстал от Direct3D с точки зрения основных функций. Только поскольку Direct3D в конце 90-х годов догонял, OpenGL теперь пришлось догнать Direct3D, чего не произошло.С 2004 по 2006 год Direct3D 9.0 был доминируют на рынке, и только несколько игр были выпущены с поддержкой OpenGL. Поддержка Direct3D была увеличена еще больше, когда был выпущен Xbox 360 в 2005 году с поддержкой Direct3D 9.0. А пока новостей не было что бы то ни было из ARB, и казалось, что OpenGL на какое-то время действительно умер.

В 2006 году был выпущен OpenGL 2.1 как незначительное дополнение к исходной версии 2.0. спецификации и принесла лишь несколько новых функций. Чтобы добавить оскорбления травмы, Microsoft выпустила Direct3D 10.0 вместе с их новой Windows Vista операционная система, которая включала в себя капитальный пересмотр API и множество новых функций. Оборудование начало двигаться в новом направлении, уходя от немедленного режима, Методология фиксированных функций в более программируемом направлении, которого не хватало OpenGL.

Между тем, сообщество разработчиков OpenGL начало беспокоиться и потребовало ответ от ARB или SGI, но то, что они получили, было совершенно другим.

На SIGGRAPH 2006 было объявлено, что OpenGL будет управляться Khronos Group в будущем вместо SGI, которая все еще владела OpenGL и всеми связанных авторских прав, но он больше не будет управлять этим.Группа Khronos — это консорциум поставщиков оборудования и программного обеспечения, заинтересованных в OpenGL который фокусируется на создании и поддержке API открытых стандартов, большинство особенно до того, как они приобрели OpenGL, файловый формат COLLADA для 3D-контента. Наконец, были некоторые новости с фронта OpenGL, и впервые в два года ходили слухи о совершенно новой версии OpenGL API, которая принесет некоторые серьезные изменения.

Пик Лонга и Mt. Эванс

Две новые рабочие версии OpenGL анонсированы в рамках временной кодовые названия «Лонгс Пик» и «Mt.Эванс «после гор в Колорадо. Пик Лонгс. будет первой спецификацией, выпущенной летом 2007 года, и Mt. Эванс несколько месяцев спустя, в октябре того же года.

Эти изменения обещали совершенно новый API, способный конкурировать с API Direct3D 10 и, как и Direct3D 10, Mt. Эванс искоренит рендеринг в немедленном режиме и полагаться исключительно на буферы и шейдеры. Этот API переписывание было грандиозным мероприятием и потребовало нескольких технических подгрупп, или TSG, которые сосредоточились на своей специализированной области спецификации OpenGL.

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

Longs Peak будет API, совместимым с оборудованием того времени и сохранить обратную совместимость со старыми версиями OpenGL, в то время как Mt. Эванс устранит обратную совместимость и займёт позицию будущего. Этот вместе с объектной моделью стали основой предлагаемого API, барабанный вызвало большие ожидания сообщества OpenGL.

Но лето 2007 пришло и прошло без вестей от Хроноса, и дальше 30 октября стало известно, что выпуск новой спецификации задерживается.В сообщество было немного недовольно, но общее мнение заключалось в том, что новый спецификация стоила ожидания, и прошел еще год.

OpenGL 3.0

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

Модель устаревания пометила все функции немедленного режима как не рекомендуется в пользу более современных методов. Однако не было планирует удалить любые устаревшие функции, оставив OpenGL 3.0 спецификация полностью обратно совместимого API со всеми вредными особенности прошлого.

Сообщество было возмущено и громко протестовало против сообщества OpenGL. доски объявлений и в других местах в Интернете.Были выдвинуты необоснованные обвинения в том, что OpenGL оставался обратно совместимым, потому что Khronos не хотел терять Заказчики САПР, которые все еще использовали немедленный режим и отказывались двигаться дальше. Много Разработчики Windows начали отказываться от OpenGL в пользу Direct3D, включая нескольких обвиняемых разработчиков программного обеспечения САПР. Если будущее выглядело уныло для OpenGL раньше, определенно казалось, что OpenGL потерял API войны раз и навсегда с этим выпуском.

После шока

Но после того, как первоначальное разочарование прошло, новая спецификация обладать некоторыми качествами, которыми не обладал Direct3D.Например, OpenGL 3.0 содержал многие функции Direct3D 10, но мог получить к ним доступ на Windows XP, тогда как Direct3D 10 требовала Windows Vista для работы из-за новая модель драйвера.

Примерно через год, в марте 2009 года, был выпущен OpenGL 3.1, который, наконец, удалены все функции немедленного режима из спецификации OpenGL эта версия 3.0 была помечена как устаревшая, что сделало ее на шаг ближе к API. обещал в Longs Peak и Mt. Эванс. В этом быстром выпуске OpenGL был наконец-то вернулся на правильный путь, и всего несколько месяцев спустя OpenGL 3.2 было выпущен, доведя API до уровня Direct3D 10 за счет включения Geometry Шейдеры. Вы узнаете больше о геометрических шейдерах в следующей главе.

Устарело, ядро ​​и совместимость

Модель устаревания OpenGL может показаться немного запутанной, поэтому в этом Раздел Я постараюсь раз и навсегда объяснить связанные с этим термины. OpenGL 3.0 представила функцию, называемую устареванием, которая «помечает» старый и ненужный OpenGL функциональность и предупредил, что эти функции могут быть удалены в будущем технические характеристики; в основном, использование устаревших функций в вашей программе не является хорошая идея двигаться вперед.

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

Это означало, что при создании устройства, использующего функции OpenGL 1.5, и драйвер вернул устройство OpenGL 2.0, это не принесет вреда, поскольку все контекст были полностью обратно совместимы.OpenGL 3.0 представил новый метод создание контекстов, запрашивающих следующие параметры при создании контекста:

  • Основной номер версии
  • Дополнительный номер версии
  • Необязательные атрибуты

В случае контекста OpenGL 3. 0 соответствующие значения будут 3, 0, и некоторая комбинация атрибутов. Эта новая функция дает гарантию что возвращенное устройство является запрошенным устройством OpenGL или ничего, что означает что версия не поддерживается.Атрибуты, которые могут быть переданы, делают выбор еще более детализирован одним из следующих:

  • Флаг контекста основного профиля
  • Флаг контекста профиля совместимости
  • Флаг прямой совместимости
  • Флаг отладки

Разница между двумя профилями в том, что основной профиль не включать любые функции, которые были удалены в предыдущих версиях, и Профиль совместимости включает их. Реализация OpenGL всегда гарантированно содержит основной профиль спецификации, но не всегда Профиль совместимости.Движение вперед с Core Profile — наиболее логичное что нужно сделать, и цель создания этого типа контекста.

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

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

Все вышеперечисленные флаги можно комбинировать вместе, за исключением Ядра и Совместимость, поскольку может быть возвращен только один из них. Объединение флагов сделано с помощью побитового оператора OR , вертикальной черты (|) в C.

Если эти термины все еще немного нечеткие для вас, не волнуйтесь, мы рассмотрим их снова в приложениях, где мы настраиваем контексты OpenGL с нуля конкретные платформы. На данный момент помните, что существует два типа OpenGL. профили, Core, более современный профиль, и Compatibility, профиль, который совместим со старыми функциями OpenGL.

OpenGL 4.0

Через год после выпуска OpenGL 3.2 OpenGL 4.0 был выпущен как API для графические процессоры последнего поколения, похожие на Direct3D 11. Одновременно OpenGL 3. 3 был выпущен, реализующий как можно больше возможностей OpenGL 4.0. при этом оставаясь совместимым с оборудованием предыдущего поколения.

Важная новая функция в OpenGL 4.0 называется тесселяцией, которая позволяет точный контроль поверхностей и автоматические уровни детализации ваших сцен.Мы рассмотрим, что такое тесселяция и как ее использовать, в следующей главе.

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

Если вам уже знаком OpenGL с немедленным режимом работы, имейте в виду, что мы не собираюсь охватить этот тип OpenGL. Вы не найдете таких команд, как glBegin , glEnd , glVertex3f и glColor3f в этой книге (кроме этих ссылки), поскольку они отсутствуют в профиле ядра OpenGL 4. 0. Забывать все, что вы узнали о немедленном режиме OpenGL до этого момента и что API немедленного режима когда-либо существовал, поскольку он никогда не вернется.

Это отличное время, чтобы начать изучать OpenGL, так как видео игры переносятся на платформы, отличные от Microsoft Windows, и способ получения компьютерной графики в реальном времени на платформах, отличных от Windows, через OpenGL. Например, разработчик Half-Life Valve портировал многие из свои популярные игры на Apple Macintosh, используя OpenGL в качестве графики библиотека.

Кроме того, современные смартфоны, такие как iPhone и телефоны на базе Android все используют OpenGL ES для интерактивной трехмерной графики, которая представляет собой API для встроенных системы, основанные на OpenGL и очень похожие на него.Это означает, что потенциально ваш код может быть достаточно переносимым для работы на ПК, Mac, консолях, а также на различные мобильные устройства.

OpenGL ES сам породил еще один API под названием WebGL , кроссбраузерность и кроссплатформенность API трехмерной графики для веб-браузера который с каждым днем ​​набирает обороты. Эта библиотека может вывести Интернет, а также многопользовательские приложения на совершенно новый уровень.

В общем, OpenGL еще далеко не мертв и процветает как полнофункциональное современное 3D графический API.

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

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

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

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

Следующий уровень — это уровень Abstraction , который содержит OpenGL или Реализации Direct3D API. Важно различать API на уровне приложения и реализации OpenGL и Direct3D в слое абстракции. Говоря языком C: вы можете думать о Уровень приложения в виде файла заголовка, содержащего только определения, а Уровень абстракции — это исходный файл, содержащий фактическую функциональность. В Уровень абстракции служит отправкой на следующий уровень путем реализации функциональность аппаратного уровня в удобном и стандартизированном формате.

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

Драйвер устройства интерпретирует команды, переданные ему уровнем абстракции. и передает их на нижележащее устройство в формате, который может понимать и легко обрабатывать.

По сути, программный конвейер служит ретранслятором от вашей программы к специализированное оборудование. Хотя это очень важно, единственная часть программного обеспечения конвейер, который вы фактически будете использовать в своих программах, — это уровень приложения, который предоставляет вам API.

Аппаратный конвейер будет подробно объяснен в другой главе, когда мы фактически настроим контекст OpenGL и окно для целей рендеринга.

Теперь, когда мы готовы начать, мы должны убедиться, что вы готовы к программирование с OpenGL 4.0. Естественно, вам понадобятся базовые знания языка C язык программирования и знаете, как подключиться к библиотеке с помощью вашего компилятора.

Если вы не знаете язык программирования C, есть много книг, научит вас использовать язык программирования C в очень простой для понимания манера. На самом деле Си не очень сложный язык для изучения. Я не жду вы должны освоить это, чтобы использовать книгу, но вам нужно будет понять основы, такие как указатели, структуры данных и функции.Итак, как только вы выучили немного C, или пока вы его изучаете, вы можете вернуться к книгу и продолжайте с этого момента.

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

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

Системные требования

Чтобы можно было запускать примеры из этой книги, ваш графический процессор должен поддерживать OpenGL 4.0. в целом.

  • Если у вас есть графический процессор NVIDIA , он должен быть хотя бы из семейства Fermi продукты, начиная с серии GeForce GTX 400.
  • Если у вас есть графический процессор AMD / ATI , он должен быть как минимум в Radeon HD 5000 серии.

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

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

Требования к программному обеспечению

Я попытался упомянуть только легко приобретаемое, бесплатное программное обеспечение с открытым исходным кодом в следующие разделы, чтобы вы могли быстро начать работу с OpenGL и везде, где есть подключение к Интернету. Основная идея OpenGL — переносимость, поэтому код, упомянутый в книге, можно будет переносить на несколько платформы тоже.

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

Самая важная часть программного обеспечения, которая вам понадобится для этой книги, — это C компилятор, который преобразует код C из его удобочитаемого текстового формата в двоичный формат, который может быть интерпретирован и выполнен на вашем компьютере.

Если вы используете Microsoft Windows , вы можете получить бесплатную версию Visual C ++ по адресу Веб-сайт Microsoft называется Visual C ++ Express.Эта программа содержит современный полнофункциональная среда разработки C и C ++, основанная на более полной Visual Studio: http://www.microsoft.com/express/windows/

Если вы используете Linux , скорее всего, у вас уже есть компилятор C на вашем компьютере. система, называемая GCC (Коллекция компиляторов GNU). Это всего лишь компилятор, это означает, что вам придется компилировать свои программы через командную строку интерфейс вместо среды разработки. http://gcc.gnu.org/

Другим вариантом компиляции кода C и C ++ в Linux является компилятор Intel C ++, который доступен бесплатно для некоммерческого использования на сайте Intel: http: // программное обеспечение.intel.com/en-us/intel-compilers/

Если у вас Macintosh , вы можете использовать Xcode, который можно бесплатно загрузить с Магазин приложений. Как и Visual C ++, Xcode — это полноценная разработка. окружение, но сосредоточено на Objective-C, а не на C и C ++. https://itunes.apple.com/us/app/xcode/id497799835

Если вы используете другую платформу, обратитесь к поставщику вашей операционной системы. для получения подробной информации о том, где приобрести компилятор C, или воспользуйтесь поисковой системой, чтобы найти для себя.

IDE (интегрированные среды разработки) — отличный способ организовать вашу проекты и могут помочь вам кодировать быстрее. Хорошая среда разработки для многих операционная система — Eclipse, который поддерживает C и C ++, а также несколько другие языки программирования. Вы можете получить среду разработки Eclipse бесплатно на eclipse.org

Конечно, у вас нет , у вас есть для использования IDE, есть много текстовых редакторов там, которые отлично подходят для редактирования кода C, такого как Vim, Emacs, Блокнот ++, или возвышенный текст.

Убедитесь, что помимо компилятора у вас есть поддержка OpenGL, обратившись к документации компилятора или проверяя каталоги include для заголовочный файл gl.h и каталоги библиотек для библиотеки OpenGL, обычно с именем opengl.lib или opengl.so , в зависимости от вашей платформы. Если ты не можешь найдите эти файлы или, если вы не уверены, обратитесь к своему компилятору документацию или веб-сайт поставщика для поддержки.

Помимо компилятора C и поддержки OpenGL, есть три дополнительных библиотеки, необходимые для примеров в этой книге.

БесплатноGLUT

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

Создан на основе давно заброшенной, но все еще популярной библиотеки GLUT (OpenGL Utility Toolkit) FreeGLUT предоставляет современную альтернативу с открытым исходным кодом, которую легко использование, кросс-платформенная совместимость и подходящая для создания демонстрационных программы, подобные тем, что описаны в этой книге.

Вы можете получить копию FreeGLUT на freeglut.sf.net, убедитесь, что у вас установлена ​​версия 2.6.0 или выше, чтобы иметь возможность создать контекст OpenGL 4.0. FreeGLUT находится под лицензией X-Consortium лицензия, что означает, что вы можете использовать ее в любой программе, даже если она проприетарная.

GLEW

Загрузка расширений может быть довольно проблематичной в зависимости от платформы, поэтому следующий Вам понадобится библиотека GLEW (OpenGL Extension Wrangler), которая упрощает использование расширений OpenGL в ваших программах. Если вы беспокоитесь, что мы пропускаем важную часть OpenGL, используя эту стороннюю библиотеку, В Приложении A подробно рассматривается загрузка расширений для нескольких платформ.

Вы можете получить копию библиотеки GLEW на glew.sf.net бесплатно, так как это также открытый исходный код и лицензируется под несколькими неограниченными лицензии, позволяющие использовать GLEW в любой кодовой базе, аналогично лицензии который использует FreeGLUT. Убедитесь, что у вас установлена ​​версия 1.5.4 или выше для OpenGL. 4.0 поддержка.

Настройка направляющих

Настройка OpenGL, GLEW и FreeGLUT в Visual C ++

Другие библиотеки

Любые другие зависимости библиотеки будут перечислены в начале каждой главы.

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

Источники СМИ и атрибуция

1 Источник, Лицензия: Creative Commons Attribution-Share Alike 3. 0 Unported

2 Источник, Лицензия: Creative Commons Attribution-ShareAlike 2.0 Generic

3 Источник, Лицензия: Creative Commons Attribution 3.0 Непортированный

4 Источник, Лицензия: Creative Commons Attribution 2.0 Generic

5 Источник, Лицензия: Creative Commons Attribution-Share Alike 2.0 Generic

Программирование компьютерной графики в OpenGL с C ++

Автор: В. Скотт Гордон
Издатель: Mercury
Дата: сентябрь 2018 г.
Страниц: 384
ISBN: 978-1683922216
Печать: 1683922212
Kindle: B07MHD8TKB
Аудитория: Разработчики, желающие изучить OpenGL
Оценка: 5
Рецензент: Майк Джеймс


C ++ и OpenGL — естественная пара, и эта книга поможет вам начать работу.

Graphics требует процессора, и у вас никогда не будет достаточно вычислительной мощности для выполнения работы между кадрами. Это версия книги автора по OpenGL в Java, но здесь используется язык C ++. Диалект C ++ довольно прост, так что вы можете легко следовать примерам. Фактически, поскольку код в основном представляет собой вызовы функций, он может быть как C, так и C ++. У меня такое ощущение, что это перевод книги по Java на книгу по C ++, но это не большая проблема.Также стоит упомянуть, что существует предвзятость Windows в том, что каталоги даны в форме Windows — опять же, не большая проблема.

План книги повторяет план Java. Глава 1 посвящена основам и знакомит с библиотеками, которые будут использоваться. Глава 2 знакомит с графическим конвейером и дает нам первый пример, который неожиданно включает в себя некоторую анимацию. Отсюда мы делаем крюк в теории, т.е. базовые преобразования 2 и 3D вводятся вместе с скалярным произведением и перекрестным произведением.Это очень просто, и если вы сделали что-то подобное, у вас не будет проблем. Если вы новичок в этом, я бы посоветовал прочитать еще одну книгу, чтобы развить идеи.

Глава 4 знакомит с буферами, униформой и прочим. Это основная глава, которую вы должны изучить, прежде чем переходить к чему-либо еще. В главе 5 объясняется наложение текстуры, что является еще одной важной идеей, которую вам необходимо освоить. Отсюда книга расширяется и охватывает более общие темы. В главе 6 объясняется, как создавать простые 3D-модели и как импортировать более сложные модели.Глава 7 посвящена освещению — стандартным моделям, в частности Gourand и Phong. В главе 8 рассказывается о постоянно утомительных тенях, а в главе 9 — о фонах. В главе 10 представлены более сложные поверхностные эффекты — карты рельефа и т. Д. Глава 11 возвращается к параметрическому моделированию с рассмотрением поверхностей с помощью кривых Безье. В главе 12 это используется в сочетании с мозаикой для создания ландшафтов. Книга завершается рассмотрением геометрических шейдеров и других техник — тумана, смешивания, трехмерных текстур, шума и так далее.

Заключение

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

Чтобы справиться с этим, вам нужно уметь хорошо разбираться в C ++, написанном в стиле C, и вам нужно будет провести некоторую отладку.но так ты учишься. Вам понадобится справочник, чтобы выйти за рамки того, что объясняет книга, но тот факт, что он объясняет это, а не просто представляет, является ценным плюсом.

Если вы хотите использовать OpenGL из C ++ / C, то это хорошее место для начала.

Чтобы быть в курсе наших новостей о книгах для программистов, подписывайтесь на @bookwatchiprog в Твиттере или подпишитесь на RSS-канал I Programmer’s Books, чтобы получать ежедневные новости о Book Watch и новые обзоры.

Программирование 3D-графики на Java, Часть 3: OpenGL

Прошло некоторое время с момента нашей последней статьи в этой серии по программированию трехмерной графики на Java (подробнее об этом в конце этой колонки). Вот краткое напоминание о том, что мы обсуждали в последний раз и на чем остановились.

В предыдущих двух столбцах (см. Ресурсы) мы исследовали Java 3D. Мы обсудили статический контент и небольшие сцены, затем использовали более крупные графы сцен и встроили интерактивность в некоторые базовые трехмерные миры.

Теперь, когда вы немного знаете об использовании Java 3D, пора сравнить и сопоставить подход Java 3D к 3D-графике с ведущим конкурентом графического API: OpenGL.

Обратите внимание, что эта статья изначально предназначалась для интенсивного использования кода, но последнее решение Arcane Technologies относительно привязки Magician (см. Ниже) потребовало удаления примеров кода.Я надеюсь, что содержание этой статьи может быть адаптировано для будущей привязки Java-OpenGL, пока недоступной в Консорциуме OpenGL.

В любом случае, я постарался предоставить все соответствующие и полезные ссылки и URL-адреса, связанные с OpenGL, в Ресурсах в конце этого столбца. Если вы хотите глубже изучить Java-OpenGL, я настоятельно рекомендую вам просмотреть эти ссылки.

Сравнение Java-OpenGL с Java 3D

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

Сильные стороны использования OpenGL (и, по мере необходимости, привязок Java-OpenGL):

  • OpenGL предоставляет процедурную модель графики

    Это близко соответствует многим алгоритмам и методам, которые программисты графики использовали исторически . Процедурная модель одновременно интуитивно понятна и проста для многих опытных поклонников 3D-графики.

  • OpenGL обеспечивает прямой доступ к конвейеру рендеринга

    Это верно для любой из различных языковых привязок, включая большинство привязок Java. OpenGL позволяет программистам напрямую указывать, как должна отображаться графика. Один не просто подсказывает и запрашивает , как в Java 3D, один предусматривает.

  • OpenGL оптимизирован всеми мыслимыми способами

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

  • Поставщики любого оборудования, связанного с 3D-графикой, поддерживают OpenGL

    OpenGL — это

    стандарт

    , по которому поставщики оборудования измеряют свои графические технологии, без исключений. Когда Microsoft присоединилась к SGI в инициативе Fahrenheit, для многих становится все более очевидным, что это, по сути, косвенное признание Microsoft того, что OpenGL выиграл войну API для 2D и 3D графики.

С другой стороны, нет ничего идеального. OpenGL и, конечно, привязки Java-OpenGL имеют некоторые существенные недостатки:

  • Сильные стороны процедурного подхода к графическому программированию одновременно являются слабостью для многих Java-программистов

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

  • Оптимизация OpenGL многих поставщиков предназначена для уменьшения выбора оборудования.

    В интересах каждого поставщика создавать собственные расширения и проводить частные оптимизации для продажи большего количества собственного оборудования. Как и при любой оптимизации оборудования, вы должны использовать оптимизацию OpenGL для конкретных ускорителей, понимая, что каждая оптимизация для одной платформы снижает переносимость и производительность для нескольких других. Оптимизация Java 3D более общего назначения в основном направлена ​​на максимальную переносимость приложений Java 3D.

  • В то время как интерфейсы C для OpenGL повсеместно распространены, интерфейсы Java еще не стандартизированы и не широко доступны

    Продукт Magician от Arcane Technologies до недавнего времени был на рынке, чтобы изменить эту проблему переносимости, но с его кончиной в значительной степени относится к кроссплатформенной истории Java-OpenGL, по крайней мере, в настоящее время. Подробнее об этом ниже.

  • Раскрытие OpenGL внутренних деталей процесса рендеринга может значительно усложнить в противном случае простые программы трехмерной графики.

    Мощность и гибкость достигаются ценой сложности.В быстрых циклах разработки современного технологического мира сложность сама по себе является чем-то, чего следует избегать там, где это возможно. Старая пословица об ошибках верна: чем больше строк кода, тем больше ошибок (в общем).