Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Direct3D [D5]


pavia ©   (2003-12-04 18:44:00) 

Недавно начал изучать.Есть вопрос ,как создать объекты где вектора используются несколько раз.Тоесть если я создаю куб то мне нужно только 8 векторов ,но приходиться на кождом face задавать по 4 векторо и того получаем 4*6=24.Вопрос в следующим как задать грани куба используя только 8 векторов.Необезательно куб ,любой другого объекта.

PS Не подскажете хороший учебник(статью) в электронном виде.


Sapersky   (2003-12-09 12:10:00) [1]

В DX8 DirectDraw как такового нет (в заголовках DirectDraw.pas идёт от 7-го). Можно инициализировать либо Direct3D8, либо DirectDraw и Direct3D7. Примеры того и другого вроде везде валяются, хоть на DelphiGFX (вверху ссылка), хоть ещё где. По DirectDraw можно посмотреть прямо в DelphiX :)


pavia   (2003-12-08 18:54:00) [2]

С AddFaces, AddTriangles. Я уже разобрался.А вот прозрачность до конца убить не удается.

А кто нибудь может привесть пример иницилизации DirectDraw c Direct3D для заголовочных фаилов DirectX8( Не DelpiX).


Sapersky   (2003-12-08 11:45:00) [3]

А, так это про DelphiX (т.е. Direct3D RM) было... Предупреждать надо.
Тогда DrawIndexedPrimitive отменяется. Наверное, что-то есть и в RM, AddFaces, AddTriangles можно посмотреть... но самое простое - создать текстовый X-файл (для куба можно вручную, в блокноте) и загрузить его. Посмотри примеры, которые имеются в комплекте. Пишется в общем так, как я описал - т.е. список вершин и список граней (задаваемых номерами вершин).
Относительно прозрачности - присвоить meshbuilder'у непрозрачный цвет или материал (не помню что конкретно в RM задаётся). Цвет - это вроде запись ARGB - поставить A=1.


pavia   (2003-12-07 14:48:00) [4]

Как убрать полупрозрачность у сетки(mesh)?


pavia   (2003-12-06 17:55:00) [5]

Как в DelphiX ,в примерах убрать прозрачность?


pavia   (2003-12-05 19:55:00) [6]

To Sapersky
Спасибо.


Sapersky   (2003-12-05 11:03:00) [7]

Использовать индексированные примитивы. Т.е. имеется буфер вершин (векторов), вершины в произвольном порядке; и к нему буфер индексов, в котором описываются треугольники по номерам вершин - например, для квадрата из двух треугольников (спрайта или ещё чего):

вершины: (0,0,0); (1,0,0); (1,1,0); (0,1,0);
индексы: (0,1,2); (0,2,3);

Пример не совсем удачный (но простой), в данном случае экономии никакой нет. На кубе, если считать размер вершины 32 байта и выводить одним вызовом:
просто список треугольников - 6*6*32 = 1152
индексами - 8*32+6*6*2 = 328 (индекс - это Word, 2 байта)

Модели в играх только индексами и задаются - иначе никакого GeForce'а не хватит.
Рисуются они DrawIndexedPrimitive.

Подробнее некогда объяснять - поищи по "DrawIndexedPrimitive", "index buffer"... можно на GameDev.ru посмотреть.


Наверх

Титульная страница Поиск, карта сайта Написать письмо