Суровая правда жизни о Direct3D

Спецвыпуск Хакер, номер #004, стр. 004-098-1

Mr_False (mr_false@mail.ru)

Здравствуй, здравствуй, мой дорогой дружок - программер. Я знаю, у тебя уже давно чешутся руки от желания написать свою 3D прогу/гамесу/фигню. Но ты не знаешь - как. Мхнда... Ты, типа, пишешь на C++. Нет?! Тяжелый случай... Ну, иди учись, здесь я тебе ничем помочь не могу... Если ты действительно пишешь на C (или уже научился - ну и шустрый же ты!), то сейчас ты будешь открывать просторы Direct3D вместе со мной ("э-э-э, я хочу сказать, ну ты можешь, если хочешь, но, если не хочешь, ты не обязана, ты просто могла бы... Да" :)). А рисовать мы будем... Треугольник, т.е. полигон (доволен?, а ты думал, я тебя заставлю сцены из анрыла рисовать с применением Environment Mapping, банального текстурирования и т.д.? А вот и кукиш. Рановато пока.). Перед тем как начать программировать эту самую графику, надо знать некоторые основы. Во-первых, это система координат. В D3D она левая. Это просто значит, что ось Z устремлена в глубь экрана, X - вправо, Y - вверх, а не то что к ней свою руку (левую) приложили коммунисты.

Фактически как это выглядит, показано на иллюстрации, но, стоит заметить, что начало координат находится в центре экрана (по умолчанию).

Во-вторых - модели освещения. В D3D их доступно две: Плоская и Гуро - она стоит по умолчанию.

Не вдаваясь в подробности, скажу лишь то, что в плоской рассчитывается цвет всего полигона сразу, тогда как в гуро рассчитывается цвет в каждой вершине. Чем это фактически отличается, видно на врезанных имагах. Первая - плоская модель. Вторая - Гуро. Еще одна инфа: она, по принципу своего действия, относится к рендерингу и освещению. Если ты задал вершины своего полигона по часовой стрелке по отношению к наблюдателю, то этот полигон будет виден (D3D не поленится его нарисовать), и наоборот. Ну и обязательно надо знать, что такое двойная буферизация. Никакого отношения к телкам и их буферам эта штука не имеет. Это просто значит, что ты, когда рендеришь, результаты своих трудов выводишь не на экран, а сначала в память, и только закончив рисовать, показываешь свое старание, попутно рисуя следующий шедевр. Сделано так умно не потому, что звучит неплохо (это тебе не хухры-мухры), а только лишь потому, что иначе экран мигает и дергается (я программил и без пресловутой буферизации - лучше бы ты не видел). Вроде все.

Творить

Для того чтобы начинать творить, надо сначала обзавестись описаниями функций и классов (в данном случае это методы и интерфейсы соответственно - Direct3D использует Component Object Model (COM), но это нам пока особо не суть важно, поэтому я не буду заострять на этом внимания - все подробно описано в SDK). "А что за SDK??" - наверняка спросишь ты. Настал черед объяснять. SDK, он же Software Development Kit - как следует из перевода, набор для создания прог. В него входит документация (именно она почему-то чаще всего и имеется ввиду под аббревиатурой SDK), заголовки, библиотеки и, реже, примеры. Оное SDK к DX'у 7 тебе и придется торжественно заполучить с сайта мелкомягких, а конкретнее с msdn.microsoft.com/directx - официального сайта разработчиков DirectX. Там в разделе DirectX Downloads ткнешь на пимпы DirectX Documentation и DirectX Headers and Libraries или что-то типа того. Но я тебе не советую жать на Download DirectX SDK - ты ведь не хочешь качать 127 метров?!

Содержание  Вперед на стр. 004-098-2

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001