Современные стандарты компьютерной графики
Интерфейс между прикладной программой и графической системой – это множество функций, которые в совокупности образуют графическую библиотеку [24]. Спецификация этих функций и есть то, что называется интерфейсом прикладного программирования (API — application programmer's interface). Модель системы прикладного программирования показана схематически на рис.11.3.
Рис.11.3. Структура прикладной графической системы
Для программиста, занимающегося разработкой прикладной программы, существует только API, и он избавлен от необходимости вникать в подробности работы аппаратуры и программной реализации функций графической библиотеки. С точки зрения прикладного программиста те функции, к которым он обращается через API, должны соответствовать концептуальной модели описания изображения. Наибольшее распространение получили следующие интерфейсы: OpenGL, Direct3D, VRML, PHIGS, Heidi. В составе API должны присутствовать функции, которые позволяли бы описывать: геометрию объектов, геометрические преобразования, наблюдателя, источники света, свойства материалов объектов. Для описания объектов чаще всего используются массивы вершин. Для простых геометрических объектов (отрезков прямых, прямоугольников и многоугольников) существует достаточно очевидное соответствие между списком вершин и формой объектов, основанное на простых математических соотношениях. В большинстве API в распоряжение пользователя предоставляется практически один и тот же набор примитивов. Такие примитивы обычно довольно быстро отображаются аппаратными средствами. Некоторые API позволяют пользователю работать напрямую с буфером кадра – считывать и записывать коды засветки отдельных пикселей. Иногда в число примитивов включаются отрезки кривых и участки поверхностей, хотя чаще такие объекты приходится аппроксимировать более простыми примитивами, причем эта задача возлагается на саму прикладную программу. OpenGl. Стандарт OpenGL(Open Graphics Library – открытая графическая библиотека) был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc [6, 24]. На сегодняшний день графическая система OpenGL поддерживается большинством производителей аппаратных и программных платформ. Эта система доступна тем, кто работает в среде Windows, пользователям компьютеров Apple. Свободно распространяемые коды системы Mesa (пакет API на базе OpenGL) можно компилировать в большинстве операционных систем, в том числе в Linux. Хотя библиотека OpenGL и считается одной из лучших библиотек для профессионального применения и для игр, у неё существуют конкуренты. Direct3D. Одним из главных конкурентов OpenGL считается Direct3D из пакета DirectX, разработанный фирмой Microsoft [2, 5, 25]. Direct3D создавался исключительно для игровых приложений. Если сравнивать эти две библиотеки, то нельзя сказать, что одна из них лучше, а другая хуже, у каждой библиотеки имеются свои особенности. Например, если сравнивать их в плане переносимости программ с одной платформы на другую, то Direct3D будет работать только на Intel платформах под управлением операционной системы Windows. Программы, написанные с помощью OpenGL можно успешно перенести на такие платформы как Unix, Linux, SunOS, IRIX, Windows, MacOS и многие другие. В плане объектно-ориентированного подхода OpenGL уступает Direct3D. OpenGL работает по принципу конечного автомата, переходя из одного состояния в другое, совершая при этом определенные преобразования. OpenGL легче чем Direct3D для изучения основ графики. OpenGL можно применять, например, для начального изучения трёхмерной графики. Контрольные вопросы и задания
1. Что представляет собой конвейерная архитектура? 2. Перечислите основные составляющие видеокарты. 3. Что такое ускоритель видеокарты? 4. Дайте определение интерфейсу прикладного программирования в компьютерной графике. 5. Какие наиболее известные графические интерфейсы прикладного программирования Вы знаете? 6. Какой типовой набор возможностей для создания графики включают в себя интерфейсы прикладного программирования?
|