
Программирование графики
Xakep, номер #040, стр. 040-075-1
Курс молодого бойца
Horrific aka Фленов Михаил smirnandr@mail.ru www.cydsoft.com/vr-online
С сегодняшнего дня я начинаю рассказ о кодинге графики в Delphi. Я долго думал, что выбрать, OpenGL или DirectX, и все же пришел к выводу, что лучше описывать именно DX. Он намного сложнее, зато более универсальный (на мой взгляд). Да и если ты захочешь узнать про OpenGL, то можешь пойти на мой сайт и скачать себе полный цикл статей по этой теме. Там достаточно инфы, чтобы из полного чайника превратиться в самовар :), а здесь я повторяться не хочу.
64к Intro
Как и при любом другом кодинге, Delphi намного облегчает программирование в DirectX. При этом размер файла значительно увеличивается, что для маленьких Intro и презентаций очень важно. Поэтому мы не будем идти простым путем, а будем создавать маленькие приложения без использования преимуществ Delphi, зато с использованием всей убогости WinAPI.
Я отказался от визуальности не только из-за большого размера получаемых файлов. Для этого было еще несколько причин:
1. Чтобы показать тебе внутренности любой программы. Так ты сможешь понять процесс выполнения прог и узнать, как работают внутренности твоих любимых окошек.
2. Такой код легко будет перенести на другой язык (С++ или ASM).
3. Так можно показать любителям VC++, что Delphi способен не только на Инет и базы данных, но и на крутую графику.
Немного истории
Давным-давно маленькая и почти никому не известная компания Microsoft создала Windows. Все было прекрасно, и в нем вроде бы удобно было работать. Но окна абсолютно не были предназначены для игр, а так хотелось получить в свои лапы деньги игрунов. Интерфейс Windows, построенный на GDI, был тормознутым, и ускорить его никак не удавалось.
И вот программеры маленькой компании решили, а почему бы не создать такую библиотеку, которая могла бы давать определенным приложениям все ресурсы компа и наивысшие привилегии? Сказано - сделано, так и появился DirectX. Но он появился не с нуля, ведь программеры маленькой компании слишком слабенькие, чтобы написать такое самостоятельно :). Зато директор богатый :), который просто купил еще более маленькую компанию, уже создавшую нечто подобное.
Но библиотека все равно была слабой, потому что сам Windows очень сильно тормознутый. Но слава Гейтсу, что появились графические ускорители и библиотека пошла в рост, потому что смогла оперативно всосать в себя все необходимое для поддержки таких карт. А самое главное, что DirectX дает программеру базовый и необходимый набор возможностей вне зависимости от того, поддерживает видеокарта ускорение или нет. Если какой-то возможности у ускорителя нет, то DirectX API просто эмулирует ее программно, заставляя поднапрячься центральный проц.
Снова в школу
DirectX - это графическая библиотека состоящая из нескольких DLL файлов:
Ddraw.dll - в этом файле находятся API функции для работы с графикой в 2D режиме.
Dsound.dll - здесь находятся API функции для работы со звуком.
D3d8.dll - это для работы с 3D графикой.
DInput8.dll - это для работы с устройствами ввода.

















































































































