Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Как совмещать 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
2-1176206136
Steep
2007-04-10 15:55
2007.04.29
Ссылка на класс


15-1175743774
iZEN
2007-04-05 07:29
2007.04.29
Квас Никола.


15-1175234938
REA
2007-03-30 10:08
2007.04.29
Operator overloading


3-1171012448
svt
2007-02-09 12:14
2007.04.29
Подскажите пожайлуста, как сделать выборку с использованием


2-1176209574
Mishenka
2007-04-10 16:52
2007.04.29
Имя компонента