Трехмерная графика с 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
Posted: 23.01.2k1
Autor: Antiloop
<anti_loop@mail.ru>
|
 |
 |
|