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

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

Как совмещать 3D & 2D [DirectX]


DevilDevil ©   (2006-05-27 20:57:00) 

Почти в каждой трёхмерной игрушке есть двухмерная менюшка. Один из вариантов, отрисовывать текстуры с условно говоря Z = 0. В OpenGL именно так и поступают, а в DX есть DirectDraw. Мой вопрос: возможно ли совмещать 2 этих режима?


MeF Dei Corvi   (2006-05-29 16:21:00) [1]


> Это про D3D???

Нет, конечно! :)
Ты же уже писал, что в D3D это делается через D3DFVF_XYZRHW.


Cash   (2006-05-29 15:57:00) [2]

MeF Dei Corvi ©   (29.05.06 15:06) [4]:
Это про D3D???


MeF Dei Corvi   (2006-05-29 15:06:00) [3]


> возможно ли совмещать 2 этих режима?

Можно, но кому это нужно?..
Если можно просто поставить ортографическую проекцию, нарисовать это самое меню и вернуть обратно перспективу, если это необходимо...


Cash   (2006-05-29 08:36:00) [4]

TButton ©   (27.05.06 21:46) [2]:
Симпатии твои понятны мне довольно. :)
> откуда знал...
Знал... не знал.... секрет фирмы! :)))

В ОГЛе это почти так же делается, но мне боле приглянулся именно D3D,
за его вот такое разделение. Можно одновременно работать в двух основных
пространствах, и у каждого из них свой базис, причем пространство XYZ
на самом деле является подпространством XYZRHW, потому, что базис его
можно выразить через базис XYZRHW путем добавления одного нулевого
элемента. :) Это конечно бред, но почти так. Я как ни будь покажу ту вещь
которую делаю, и только попробуйте сказать, что это 2D! :)))

Да, кстати, DirectDraw (мне так по крайней мере жужжали), начиная с 8.1
версии эмулируется через D3D, но не поддерживает крутых фич, которые
предоставляет D3D.


TButton   (2006-05-27 21:46:00) [5]


> (TButton, смотри сюда! Вот оно!)

откуда знал, что посмотрю?! =)
и потом при всей неприязни к 3Д я больше симпатизирую ОГЛ


Cash   (2006-05-27 21:16:00) [6]

DevilDevil ©:
> возможно ли совмещать 2 этих режима?

Вроде НЕТ!
Для вывода 2D через Direct3D есть очень хорошая штуковина!
(TButton, смотри сюда! Вот оно!)

Имеется флаг формирования вершин, это D3DFVF_XYZRHW
Этот флаг определяет позицию так называемой трансформированной
вершины.
Проще говоря при добавлении флага в дескриптор вершины, запись самой
вершины надо подкорректировать примерно так:

Const
  MyFVF = D3DFVF_XYZRHW or D3DFVF_DIFFUSE;
Type
  TMyVertex = packed record
    X: single;
    Y: single;
    Z: single;
    rhw: single;
    DifColor: DWORD;
  end;


Тут за X, Y, Z и rhw отвечает флаг D3DFVF_XYZRHW, а за DifColor - D3DFVF_DIFFUSE.

Тут еще есть такая штука! Z должно изменяться в пределах от 0 (ближняя
граница) од 1 (дальняя граница), а rhw  должно быть 1 если вершину надо
рисовать.


Наверх

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