Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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.052 c
2-1176329072
SerJaNT
2007-04-12 02:04
2007.04.29
Удалить дубликаты в ListBox


1-1173084497
Aleksandr.
2007-03-05 11:48
2007.04.29
Как строку даты/времени в формате ISO превратить в TDateTime?


15-1175605808
infom
2007-04-03 17:10
2007.04.29
Шрифт кода в программировании


2-1176060381
Ezorcist
2007-04-08 23:26
2007.04.29
перевести итый символ строки в верхний регистр?


15-1175233277
Потребитель
2007-03-30 09:41
2007.04.29
Почему бы взятничество не приравнять к особоопасным?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский