Обновление статьи 11.06.2k
Трехмерная графика с Direct3D:Retained Mode
Содержание
Отсебятина
Привет всем, кто это читает!
Сегодня и на протяжении еще многих дней (и ночей :) мы будем говорить
о трехмерной графике. Что это такое и с чем ее едят, что можно и что нельзя,
как сделать то и это... В общем, я постараюсь рассказать все так, чтобы
прочитав эту новую серию Direct3D:RM, вы могли сесть и спокойно что-нибудь
такое трехмерное написать. По крайней мере я на это надеюсь.
Что это за серия: D3D:RM - это набор API, которые в отличие от D3D:Immediate
Mode, о которых я уже немножко рассказывал,
сделаны для того, чтобы упрощать жизнь 3D программиста и позволять ему
гораздо легче программировать трехмерную графику, чем он бы делал это
на более низкоуровневом D3D:IM В какой-то степени, D3D:RM более сходен
с OpenGL, то есть он построен, как хвастается Microsoft "для того,
чтобы каждый мог легко и просто производить трехмерные программы".
Эта серия предназначена для того, чтобы научить вас программировать 3D-графику
на VB с нуля, то есть, в нескольких следующих статьях я дам теоретические
основы трехмерной графики, как они используются в D3D:RM, а потом мы перейдем
к созданию 3D программ.
Хочу обратить внимание на то, что было бы очень желательно, чтобы вы
прочитали эти базовые статьи, ибо все далее следующее будет базироваться
на них. Также, я предполагаю, что вы знакомы с разделом DirectX - DirectDraw.
Ежели нет, то познакомьтесь с ним сейчас,
потому что D3D:RM очень тесно связан с DirectDraw, а также я буду использовать
кучу понятий, с которыми вы должны были бы познакомиться при изучении
этого раздела.
Ну и напоследок, перед началом изучения материала :) хочу сказать, что
я планирую (как и в случае с моим учебником по DirectDraw) выкладывать
на сайт эту серию поочередно и не сразу. Таким образом, если повествование
вдруг оборвется на самом интересном моменте, то это значит, что над следующей
частью я в данный момент упорно работаю. Вобщем я решил мучать вас потихоньку,
заставляя ждать новые части, чем уйти в оффлайн на пару месяцев, а потом
выдать конечный результат :)
Итак, начнем
Что такое Direct3D:RM
Как я уже сказал, D3D:RM представляет собой набор API для быстрого программирования
3D графики. "Если вы хотите создать 3D-мир и манипулировать им в
реальном времени, вы должны использовать D3D:RM" - это слова Microsoft'а.
Ну должны мы или не должны - это еще вопрос, но реальность заключается
все-таки в том, что D3D:RM - это реальный инструмент создания трехмерной
программы, будь то игра, серьезная графическая программа или что-либо
еще.
Если вы уже заметили :) Direct3D имеет еще один подраздел - Direct3D:Immediate
Mode - это уж совсем низкоуровневые API. Я не рекомендую их использование,
если вам необходимо просто научиться делать 3D графику. К слову сказать,
D3D:RM не входит в разряд DirectX Foundation, так как сам он основан на
D3D:IM
Что хорошо, D3D:RM практически все равно, какую видеокарту вы ему подсунете,
главное, чтобы для нее был установлен подходящий драйвер. Это обуславливает
легкую возможность использования аппаратного ускорения.
D3D:RM имеет набор инструментов для загрузки и манипулирования так полюбившегося
всем формата трехмерных моделей .X - родного формата DirectX. Описание
этого формата я обязательно дам в этой серии. Его удобство заключается
в том, что с помощью небольшой утилиты 3dsconv, вы можете конвертить модели
из популярнейшего формата Autodesk 3D Studio - 3DS в формат X. Хоть 3D
Studio устарел, но вы можете рисовать свои модели в Kinetix 3D Studio
MAX, экспортировать их в 3DS и получать .X Вобщем, без моделей вы не останетесь.
Почему-то Microsoft прекратил разработку Direct3D:RM и этот интерфейс
остался замороженным на уровне DirectX6. Это создает ряд неудобств для
программиста на VB, так как чтобы программировать 3D графику в полном
экране (и соответствнно использовать максимум 3D ускорения) надо использовать
интерфейс DirectDraw4 вместо DirectDraw7. DirectDraw4 (а вместе с ним
и все интерфейсы и команды, в которых есть определитель 4) относятся к
DirectX6. Хорошо, что еще хоть какая-то поддержка осталась и можно спокойно
и без особых фокусов с тормозными tlb переведенными с Си программировать
3D графику.
Если же вы хотите делать 3D в окне, вам опять придется использовать интерфейсы
DD7. Кроме того, DD7 не может работать с дополнительными видеокартами
вообще. (DD просто не создается под GUID второй видеокарты). Приходится
опять использовать DD4 и отсюда жуткая неразбериха :(
Что серьезного можно написать на Direct3D:
Хочу вас сначала огорчить, а потом утешить. С помощью VB вы скорее всего
вряд ли напишете игру мирового уровня (слишком тормозит VB). Но зато маленькую
и непривередливую игру вы можете написать легко. Также, вы можете писать
деловые программки, использующие трехмерную графику, однако опять же,
серьезный графический редактор у вас не выйдет. В будущем, эта ситуация
может измениться. На машине класса Pentium-не-MMX с Direct3D лучше даже
не возиться. Чем больше у машины мозгов, тем лучше. Также, хотелось бы,
(если комп слабоват) чтобы у вас имелся какой-никакой ускоритель.
Известные игры на движке Direct3D - Весь Tomb Raider, Battle Zone 1-2,
NFS, Dark Omen.
Direct3D более подходит для деловых программ, чем OpenGL - 3D редакторы
тому пример.
Ну что же, надеюсь вы готовы. В следующей части мы начнем изучать трехмерную
азбуку.
Приятного программирования, Antiloop
|