Уголок DirectX        Содержание

Обновление статьи 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


>>> Реклама <<<