Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.044 c
11-1157112447
Vorontsov
2006-09-01 16:07
2007.04.29
Проблема с формами


2-1176237348
ppcumax
2007-04-11 00:35
2007.04.29
Как сделать паузу в цикле


3-1170946102
umbra
2007-02-08 17:48
2007.04.29
Ошибка БДЕ "Could not find language driver"


15-1175444112
VirEx
2007-04-01 20:15
2007.04.29
Новое поколение


15-1175817678
trigle
2007-04-06 04:01
2007.04.29
Существуют ли




   Наверх