DirectX против OpenGL
Алексей Малашин
Xakep Железо, номер #006, стр. 006-068-2
Конечно, такая схема работы довольно сложна, и можно было бы самому обратиться к видеоплате, однако современные ОС, заботясь о стабильности, блокируют прямой доступ к аппаратным частям компьютера, то есть, чтобы работать с каким-либо устройством, требуется написать драйвер, а это уже не так просто. К тому же при прямом доступе к железу все операции по обработке графики проходят в разы быстрее, поскольку просчет производится непосредственно адаптером. Поэтому для работы с графической информацией и были написаны данные библиотеки, причем в разработке принимали участие многие крупные компании.
Основу обоих API составляют несколько файлов, в которых содержатся как низкоуровневые функции (типа вывода пикселя на экран), так и более сложные модули (типа рисования линии, состоящей из множества пикселей).
Немного истории
Чтобы лучше понять, чего можно ждать от реализации обоих API, обратимся к истокам их создания.
OpenGL. Этот API Основан на стандарте IRIS GL, разработанном корпорацией Silicon Graphics Incorporated (SGI). Окончательно спецификация оформилась в 1992 году (30 июня релиз версии 1.0). В OpenGL (Open Graphics Library - Открытая Графическая Библиотека) закладывалась идея создания аппаратно-независимого интерфейса, то есть единожды написанные программы могли бы без проблем работать на различных платформах. Сегодня развитием OpenGL занимается Architectural Review Board (ARB - Комитет Пересмотра Архитектуры), куда входят такие известные компании как 3D Labs, SGI, Apple, nVIDIA, ATi, Intel, id Software, Microsoft.
Открытая Графическая Библиотека нашла свое применение во многих областях (не только игровой индустрии), и уже 12 лет остается востребованной, но сегодня ARB несколько «тормозит» развитие стандарта, поскольку для добавления/удаления каких-либо основополагающих понятий нужно провести большое количество согласований среди входящих в комитет компаний. Однако разработчики графического железа вышли из положения, создав extensions (расширения) для получения доступа к новым функциям. Скоро ожидается версия OpenGL 2.0, которая предполагает множество революционных изменений, и уже полным ходом идет процесс ее стандартизации.
DirectX. Эта библиотека является изобретением компании RenderMorphic, приобретенным Microsoft. Потребность в дополнительном графическом API возникла из-за изначальной ограниченности программирования игр под Windows 95 (а вернее, из-за медленной обработки мультимедиа данных). Поначалу Game Software Development Kit (Game SDK) позиционировался, как «идеальное решение для создания игр». Конечно же, DirectX 1.0 (впрочем, как и 2, и 3) не мог конкурировать с OpenGL, и поначалу это была медленная, сложная и довольно «дырявая» библиотека. Продвижение DirectX началось с седьмой версии, когда реализация интерфейсов между программной и аппаратной частью стала быстрее и удобнее в программировании. Сейчас эта библиотека является достаточно мощной и стабильной (причем по большей части ее пишут программисты, работающие над Windows).