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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
3-1096448284
Serrrrg
2004-09-29 12:58
2004.10.24
Ошибка записи.


3-1095938546
Nick-From
2004-09-23 15:22
2004.10.24
TDBComboBox не дает выбирать значения


9-1087849883
MrAngel
2004-06-22 00:31
2004.10.24
Иерархия данных форматов.


1-1097423598
dracula
2004-10-10 19:53
2004.10.24
конвертация кодировок


4-1095675542
ArhDD
2004-09-20 14:19
2004.10.24
Record HWND