Что
такое
DirectX?
Antiloop, Уголок DirectX.
Эта статья предназначена для тех, кто хотел бы изучить основы программирования DirectX на Visual Basic, но знает только, что DirectX - это какая-то ускорительная фича, а в чем здесь собственно суть представляет себе не очень.
DirectX представляет собой набор технологий и инструментов, которые позволяют создавать разработчику игры и мультимедиа приложения с неслыханным во времена MS-DOS качеством графики и звука. Кроме этого, DirectX служит для обработки клавиатуры, мыши, джойстика, а также для сетевого сообщения.
DirectX подразделяется на несколько частей, каждая из которых отвечает за что-то свое:
DirectDraw - служит для ускорения отображения и обработки двумерной графики
Direct3D - для ускорения трехмерной графики
DirectSound - работает со звуком - микширование и 3D звук
DirectInput - для обработки клавиатуры, мыши, джойстика и так далее
DirectPlay - служит в основном для сетевой игры
Эти разделы освещаются здесь, в Уголке. Кроме этого существуют и другие разделы:
DirectAnimation - для создания анимационных эффектов в WEB-стриницах
DirectShow - для применения мультимедиа в WEB
DirectMusic - новый раздел. Служит для применения музыки в играх
И это еще не все.
DirectX разрабатывался специально, чтобы превратить платформу Windows как в основную для разработки игр. До этого разработчики использовали только MS-DOS и лишь совсем незначительная часть игр делалась для Windows 3.xx Одной из более ранних попыток Microsoft был выпуск WinG, который позволял разработчикам не писать бесконечные поддержки для различных типов аудио-видеоадаптеров, однако появление DirectX полностью изменило дело в пользу Windows. Теперь, разработчики могли почти не отвлекаться на подержки различных карт, потому что если у карты была поддержка DirectX, то несовместимость больше не была проблемой.
К слову сказать, Direct3D был попыткой Microsoft как всегда все подгрести под себя. В их стратегии стояло создать универсальный интерфейс для программрования ускорителей трехмерной графики, однако среди преимуществ Direct3D было и много недостатков, поэтому не все производители трехмерных игр используют D3D, предпочитая или интерфейс OpenGL производства Silicon Graphics или пишут игры под Glide интерфейс, который поддерживается только видеокартами н
DirectX - это интефейс довольно низкого уровня. С помощью своих API он предоставляет программисту прямой доступ к памяти адаптеров, где программист может создавать изображение, хранить графические образы, звуки и т. д. За счет непосредственной работы с памятью достигается ускорение, то есть теоретически частота, с которой программист сможет заставить прорисоваваться экран будет зависеть только от частоты, поддерживаемой монитором. Реально же, человек уже слабо воспринимает различия в частоте обновления, если она более 33 FPS (Frame Per Second - кадров в секунду), поэтому будет очень хорошо, если Вы сможете подвести Вашу частоту к этой.
Современные графические адаптеры позволяют доводить FPS двумерной графики до всех разумных пределов, поэтому все задержки с ее отображением от того, что компьютер не успел подготовить новое изображение, а это уже зависит от чатоты процессора и объема оперативной памяти. В трехмерной же графике все сложнее. Здесь скорость отображения зависит как и от мощности компьютера, так и от качества и способности ускорения графической карты. Разработчики видеоускорителей применяют все более и более навороченные технологии ускорения и все для того, чтобы увеличить FPS еще на десяток кадров, а также улучшить качетво картинки (устранить пикселизацию, сгладить цвета...)
Direct3D позволяет вам программировать для всех распространенных типов видеоускорителей, и вы можете делать это с помощью Visual Basic.
C выходом седьмой версии, DirectX теперь официально поддерживает Visual Basic. Однако и до этого было возможно использовать DirectX из VB с помощью библиотек типов (c) Patrice Scribe.
Но все же, скорость работы и количество поддерживаемых функций DirectX из VB оставляют желать лучшего. Основная часть внимания DirectX легла конечно же на C++. DirectX работает с VB примерно так:
Команда VB -> DirectX Type Library - > DirectX -> DirectX что-нибудь делает
DirectX что нибудь делает -> DirectX сообщает TL -> TL сообщает VB -> VB возвращает значение
Сами видите, что цепочка чересчур длинна. Но что поделаешь, Visual Basic не был изначально инструемнтом для создания игр. Но с другой стороны, именно поэтому, программирование DirectX становится таким простым.
Дерзайте, экспериментируйте, и кто знает, может быть у вас получится нечто такое!.. А то, что хоть то-нибудь получится, так это точно.