Форум: "Игры";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизКак совмещать 3D & 2D Найти похожие ветки
← →
DevilDevil © (2006-05-27 20:57) [0]Почти в каждой трёхмерной игрушке есть двухмерная менюшка. Один из вариантов, отрисовывать текстуры с условно говоря Z = 0. В OpenGL именно так и поступают, а в DX есть DirectDraw. Мой вопрос: возможно ли совмещать 2 этих режима?
← →
Cash © (2006-05-27 21:16) [1]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 если вершину надо
рисовать.
← →
TButton © (2006-05-27 21:46) [2]
> (TButton, смотри сюда! Вот оно!)
откуда знал, что посмотрю?! =)
и потом при всей неприязни к 3Д я больше симпатизирую ОГЛ
← →
Cash © (2006-05-29 08:36) [3]TButton © (27.05.06 21:46) [2]:
Симпатии твои понятны мне довольно. :)
> откуда знал...
Знал... не знал.... секрет фирмы! :)))
В ОГЛе это почти так же делается, но мне боле приглянулся именно D3D,
за его вот такое разделение. Можно одновременно работать в двух основных
пространствах, и у каждого из них свой базис, причем пространство XYZ
на самом деле является подпространством XYZRHW, потому, что базис его
можно выразить через базис XYZRHW путем добавления одного нулевого
элемента. :) Это конечно бред, но почти так. Я как ни будь покажу ту вещь
которую делаю, и только попробуйте сказать, что это 2D! :)))
Да, кстати, DirectDraw (мне так по крайней мере жужжали), начиная с 8.1
версии эмулируется через D3D, но не поддерживает крутых фич, которые
предоставляет D3D.
← →
MeF Dei Corvi © (2006-05-29 15:06) [4]
> возможно ли совмещать 2 этих режима?
Можно, но кому это нужно?..
Если можно просто поставить ортографическую проекцию, нарисовать это самое меню и вернуть обратно перспективу, если это необходимо...
← →
Cash © (2006-05-29 15:57) [5]MeF Dei Corvi © (29.05.06 15:06) [4]:
Это про D3D???
← →
MeF Dei Corvi © (2006-05-29 16:21) [6]
> Это про D3D???
Нет, конечно! :)
Ты же уже писал, что в D3D это делается через D3DFVF_XYZRHW.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c