Истоки
С появлением в начале 80-х годов компьютеров просчитывающих порядка 50 миллионов операций в секунду, стали доступны сложные вычисления позволяющие строить 3D модели в памяти компьютера, и выводить на терминал или принтер. Многие компании производящие специализированные компьютеры, для этих целей использовали свои операционные системы (в основном написанные на базе Unix) и свой собственный неподражаемый код. Но в принципе реализуются одни и те же функции.
Компании быстро усвоили, что работа связанная с визуализацией объектов сулит большие прибыли. Однако действенных алгоритмов первое время предложить не могли. Такая ситуация протянулась до 1991 года, когда ведущая кампания в области графики Silicon Graphics представила свой стандарт на графические процедуры и функции. Стандарт стал общепринятым и теперь не одна современная программа работающая на вашем компьютере с 3D графикой не "брезгует" обращаться к библиотеке opengl32.dll.
Назначение
Прежде всего свободный перенос исходного кода разработанного на основе OpenGl между различными платформами. Свободное использование во всех отраслях науки и техники, CAD проектирование, игры, 3D редакторы, 3D аниматоры и т.д.
OpenGl упрощает написание программ. Кстати, есть возможность создания собственной версии руководствуясь спецификацией SGI и своими алгоритмами прорисовки. Важно, что новые библиотеки процедур и функций не теряют совместимости с ранее написанными программами.
В последнее время появились новые направления в области использования OpenGl например: передача 3D моделей через сеть на компьютер пользователя в реальном масштабе времени, вызов Gl процедур и средств программирования набирающих на данный момент популярность по причине простоты (Delphi,VisualBasic, Java).
Реализация программна
OpenGl реализован на всех современных операционных системах: MacOS, OS/2, UNIX, Windows 95, Windows NT, Linux, OPENStep, Python, BeOS. Производительность функций и процедур OpenGl лежит целиком на совести тех кто писал библиотеку для конкретной системы. На данный момент "открытость" OpenGl подкреплена библиотекой GLUT, что расшифровывается как Graphics Library Utility (утилиты для графической библиотеки). GLUT позволяет "перетащить" к примеру, программу OpenGl разработанную согласно спецификации, с Unix платформы SGI на родную Windows, или BeOs, не затрудняя себя заботой, о видеокарте, глубине цвета и т.д. Ну, а результат - быстрое написание программ, совместимость, высокая скорость выполнения программы.
Реализация аппаратная
Заманивая доверчивых покупателей, дилеры компаний торгующих видеоадаптерами сулят им потрясающую производительность в 3D графике, ссылаясь на полную аппаратную поддержку OpenGl. Полная аппаратная поддержка потребовала бы целого заправского графического процессора, наподобие графических станций SGI. Но тогда бы любой 3Dfx акселератор стоил на порядок дороже (тысяч, этак, двадцать долларов). Обычно качественные продукты имеют хорошую поддержку "аппаратного" ускорения OpenGl, за счёт команд акселератора включенных в Gl функции.
Борьба за скорость
На работу библиотеки OpenGl оказывает сильное влияние скорость математического сопроцессора. Компенсировать невысокую скорость математического сопроцессора х86, призваны придуманные в 90-х годах конкурирующими производителями процессоров наборы команд MMX, 3DNow и SSE. Дополнительные регистры позволяют выполнять операции с большей разрядностью сразу, а не оперировать с медленной оперативной памятью. Команды MMX работают с массивами данных быстрее чем обычные команды, 3DNow и SSE позволяет просчитывать с меньшей точностью числа с плавающей точкой (в 2 раза быстрее сопроцессора).
To be continued
К сожалению количество продуктов оперирующих с новинками пока не велико. Поддержка 3DNow и SSE в DirectX 7.0 крайне сомнительна, а из производителей видеоакселераторов заявлена поддержка в драйверах только у Asustek. Более высокие результаты получаться при работе Dual Pentium II 266-450 Mhz , с установленной Windows Nt или BeOs.
Продолжение следует....