Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

Иерархия данных форматов.   Найти похожие ветки 

 
MrAngel   (2004-06-22 00:31) [0]

Всё относится к Direct3D.
Есть так называемые форматы. Вот моя предположительная иерархия:

Будем считать от форматов заднего буффера (Back Buffer Formats).
Итак -
1. каждый формат заднего буффера (Back Buffer Format) может иметь в себе несколько форматов мультисемплирования (Multisample Formats), т.е. D3DMULTISAMPLE_NONE, D3DMULTISAMPLE_2_SAMPLES, D3DMULTISAMPLE_4_SAMPLES и т.д.

2. каждый формат мультисемплирования (Multisample Format), может содержать в себе несколько Depth/Stencil Formats, т.е. D3DFMT_D16_LOCKABLE, D3DFMT_D24S8, D3DFMT_D24X8, D3DFMT_D16 и т.д.

Верно ли моё суждение. Или есть какие-нибудь иные способы реализации размещения данных ?


 
MrAngel   (2004-06-22 17:06) [1]

Ребята неужели ни кто этим не занимался? Ведь это относится к перечислению возможных параметров при создании девайса.


 
Колбасьев   (2004-06-25 13:10) [2]

Я (почти) все делаю по умолчанию :-) И работает.


 
MrAngel   (2004-06-25 15:00) [3]

Да, конечно работать будет. Но бывает иногда нужно сделать перечисление возможных параметров для выбора пользователем :-)

В общем всё выше спрашиваемое было правильным подходом.

Но вот теперь несколько иная проблема по той же теме.
BehaviorFlags должна принимать обязательно одно из этих значений:
D3DCREATE_SOFTWARE_VERTEXPROCESSING
D3DCREATE_MIXED_VERTEXPROCESSING
D3DCREATE_HARDWARE_VERTEXPROCESSING

Как определить какие из этих IDirect3D9::CreateDevice может принимать. Ведь попустим, если видеокарта не поддерживает хардварный процессинг, то D3DCREATE_HARDWARE_VERTEXPROCESSING сразу же отпадает, но как это определить ?


 
NailMan ©   (2004-06-25 15:52) [4]

Нет не так:
Я в деске(в настройках) энумерирую так(конкретно для формата бэкбуфера 16-bit):

if CheckMultiSample(D3DFMT_R5G6B5,D3DMULTISAMPLE_NONE) then
   MS.Lines.Add(GetSampleTypeFromFormat(D3DMULTISAMPLE_NONE));
For i:=2 to 16 do
if CheckMultiSample(D3DFMT_R5G6B5,TD3DMultiSample_Type(i)) then
     MS.Lines.Add(GetSampleTypeFromFormat(TD3DMultiSample_Type(i)));

Где

Function CheckMultiSample(AdapterFormat:TD3DFormat;Fmt:TD3DMultiSample_Type):boolean;
var hr:hresult;
begin
hr:=d3d.CheckDeviceMultiSampleType(D3DADAPTER_DEFAULT,
                                  D3DDEVTYPE_HAL,
                                  AdapterFormat,
                                  False,
                                  Fmt,
                                  nil);
//    If failed(hr) then showmessage(DXGetErrorString9(hr));
   result:=SUCCEEDED(hr);
end;

Тоесть для каждого формата бэкбуфера может или не может поддерживаться какой-либо формат мультисемплинга. Сам мультисемплинг уже ничего не содержит - это константы вобщем-то.
Function GetSampleTypeFromFormat(fmt:TD3DMULTISAMPLE_TYPE):string;
begin
result:="D3DMULTISAMPLE_NONE";
 if fmt=D3DMULTISAMPLE_NONE then begin result:="D3DMULTISAMPLE_NONE";exit;end;
result:="D3DMULTISAMPLE_"+inttostr(dword(fmt))+"_SAMPLES";
end;




> Как определить какие из этих IDirect3D9::CreateDevice может
> принимать. Ведь попустим, если видеокарта не поддерживает
> хардварный процессинг, то D3DCREATE_HARDWARE_VERTEXPROCESSING
> сразу же отпадает, но как это определить ?


d3d.GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,D3DCaps);
if
    (not checkflag(D3DCaps.DevCaps,D3DDEVCAPS_DRAWPRIMITIVES2EX)) and
    (not checkflag(D3DCaps.DevCaps,D3DDEVCAPS_HWTRANSFORMANDLIGHT))
    then
   begin
    ShowErrorReport("Извините, но у Вас видеокарта не поддерживает Hardware Transform & Lightning."#13#10+
                    "Программа не запустится на картах не имеющих геометрического сопроцессора."#13#10+
                    "Минимальные видеокарты имеющие геометрический сопроцессор являются nVIDIA GeForce 256 и ATI Radeon 8500");
    D3D:=nil;
    result:=1;
    exit;
   end;


Так пойдет?  ;-)

Сосбно и D3DDEVCAPS_HWTRANSFORMANDLIGHT вполне хватит. Если D3DDEVCAPS_HWTRANSFORMANDLIGHT поддерживается, то и MIXED тоже поддерживается.

---
WBR, NailMan aka 2:5020/3337.13


 
MrAngel   (2004-06-25 17:36) [5]

NailMan © почему не так ? всё так как и у тебя. Только у меня ещё каждый формат мультисемплинга имеет ещё набор Depth/Stencil Formats.

За второе большое спасибо.


 
MrAngel   (2004-06-25 17:57) [6]

На самом деле идея такого размещения данных была взята из DirectX Caps Viewer.

Я бы сам не разобрался в том, что они наворотили там с этими методами определения параметров. С определением видео режимов ещё куда бы не шло, но это !!!



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
14-1096818605
Почтальон
2004-10-03 19:50
2004.10.24
Бесплатная почта


1-1097235049
Cosinus
2004-10-08 15:30
2004.10.24
StringGrid и пунктир if gdFocused (DrawFocusRect)?


1-1097234888
andruxa
2004-10-08 15:28
2004.10.24
System Erro. Code:1400. Недопустимый дескриптор окна


1-1097362074
Кто--то
2004-10-10 02:47
2004.10.24
Как сделать Edit1.Text := test , чтобы при этом не срабатывало


1-1097587817
Павел
2004-10-12 17:30
2004.10.24
Выход из цикла по нажатию кнопки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский