Smoke писал(а):Очередной вопрос чайника - чем различаются различные DX? Кроме того, что на новых ДХ не идут старые игры? И чем ОпенДжЛ отличается от ДХ?
Что такое DirectX и OpenGL
И DirectX и OpenGL это API - Application Programmers Interface. Т.е. набор инструментов для программиста по созданию приложений(программ) определенного назначения. Для работы с графикой, звуком, создание интерфейса, исскуственного интеллекта и т.д. MFC, GTK, OpenGL, OpenAL, DirectX и прочие API содержат в себе функции, процедуры, переменные, константы и все такое прочее для облегчения жизни программисту. Т.е. раньше функции в играх для смены экрана или отображения анимационного спрайта приходилось писать самомму. В API эти функции уже есть. Т.е. программист благодаря этим функциям меньше отвлекается на мелочи, и занимается непосредственно самой игрой. Опять же, т.к. это стандартизированное то добавление нового программиста в команду проходит более безболезненно и в более короткие сроки.
В чем разница между OpenGL и DirectX
OpenGL расшифровывается как Open Graphics Library - Открытая графическая библиотека. Стандарт в разработке которого и принимают множество крупных корпораций, компаний и независимых разработчиков. OpenGL предназначается только для отрисовки графики. Двух и терхмерной. Но не более. DirectX (продукт все права на который принадлежит только Microsoft) включает в себя сразу несколько библиотек различного назаначения
DirectDraw - 2-ух мерная графика, Direct3D - 3-ех мерная графика (начиная с версии 8 эти две библиотеки слились в DirectX Graphics)
DirectSound - вывод звука, DirectSound3D- вывод звука с 3-х мерным позиционированием, DirectMusic - вывод музыки MIDI формата(начиная с версии 8 эти 3 библиотеки слились в DirectX Audio)
DirectInput - обработка управляющих сообщений с клавиатуры, мышки, ждойстика, руля и т.д.
DirectPlay - игра по сети, модемному и прямому соединенению компов
DirectSetup - для создания инсталяционных пакетов игрушек
Direct3DRM - высокоуровневая система создания 3-ех мерной гарфики(проще понятная программисту но не самая быстрая)
Direct3DIM - низкоуровневая система создания трехмерной графики, менее дружественная к программисту но более производительная, практически выжимающая все соки из 3-Д ускорителя
DirectShow - система для работы с потоковыми мультимедия данным (видео ролики, аудио потоки)
Т.е. DirectX это вещь в себе. Пользуясь только этой библиотеков можно создавать законченные игры.
Для создания игры под OpenGL придется использовать дополнительные библиотеки для обработки звуков, управления, сети и прочего. Причем можно использовать тот же DirectX. Как пример может выступать Quake 3,4, Doom III. Графика генерируется с помощью OpenGL а всем остальным занимается DirectX. Но OpenGL имеет одно существенно преимущество. Он существует практически на всех платформах и системах (MacOS, Unix, Linux, Windows и т.д.) В то вермя как DirectX ограничен Windows системамим и игровой приставкой от Microsoft X-Box.
Версии OpenGL и DirectX
С ростом версии API в него добавляются некоторые функции которые программисту приходилось раньше либо писать самому либо с привлечением других библиотек программного кода. Потому более свежие игрушки обычно требуют более свежей версии DirectX. И отказываются пускаться на старых версиях. Т.к. система попросту может не понять чего от нее требуют. Ибо не знает таких функций и процедур.
Поддержка видеоадаптерами разных версий DirectX
По идее любой компьютер способен работать с любой версией DirectX даже имея на борту самую старую видеокарту на которой вообще отсутствует поддержка 3D. Но другой вопрос с какой скоростью все это будет происходить. Получится что все функции по обработке примитивов трехмерной графики, просчета положений объектов и всего такого возьмет на себя центральный процессор. И ничем другим он заниматься не будет. Как пример посмотреть что из этого выйдет поставьте любую версию 3D-Mark (начиная с 2001) и при запуске выбирете только CPU тесты. Скорость и картинка вас порадует =). Видеокарта поддерживающая DirectX берет на себя функции исполнения инструкций DirectX. Т.е. не происходит разбиение например инструкции отображения такого то объекта с такими то вершинами в таких то координатах на составляющие вплоть до отображения каждой точки, а видеокарта проглатывает эти инструкции и начинает делать эту работу не отвлекая процессор. А делает это она хорошо. Ее ведь специально такой создали. Ну а так как различия между версией допустим 8 и 9 Direct X есть то функции которые не понимает видеокарта отдаются на растерзание CPU и общая производительность системы может снижаться. Поэтому видеокарта поддерживающая более свежую версию DirectX более производительнее влияет на систему в целом.
[/u]
Когда то мы умели летать. Но мы вспомним, обязательно вспомним.