![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Иерархия данных форматов. [Delphi]
MrAngel © (2004-06-22 00:31:00)Всё относится к 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-25 17:57:00) [1]На самом деле идея такого размещения данных была взята из DirectX Caps Viewer.
Я бы сам не разобрался в том, что они наворотили там с этими методами определения параметров. С определением видео режимов ещё куда бы не шло, но это !!!
MrAngel (2004-06-25 17:36:00) [2]NailMan © почему не так ? всё так как и у тебя. Только у меня ещё каждый формат мультисемплинга имеет ещё набор Depth/Stencil Formats.
За второе большое спасибо.
NailMan (2004-06-25 15:52:00) [3]Нет не так:
Я в деске(в настройках) энумерирую так(конкретно для формата бэкбуфера 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 15:00:00) [4]Да, конечно работать будет. Но бывает иногда нужно сделать перечисление возможных параметров для выбора пользователем :-)
В общем всё выше спрашиваемое было правильным подходом.
Но вот теперь несколько иная проблема по той же теме.
BehaviorFlags должна принимать обязательно одно из этих значений:
D3DCREATE_SOFTWARE_VERTEXPROCESSING
D3DCREATE_MIXED_VERTEXPROCESSING
D3DCREATE_HARDWARE_VERTEXPROCESSING
Как определить какие из этих IDirect3D9::CreateDevice может принимать. Ведь попустим, если видеокарта не поддерживает хардварный процессинг, то D3DCREATE_HARDWARE_VERTEXPROCESSING сразу же отпадает, но как это определить ?
Колбасьев (2004-06-25 13:10:00) [5]Я (почти) все делаю по умолчанию :-) И работает.
MrAngel (2004-06-22 17:06:00) [6]Ребята неужели ни кто этим не занимался? Ведь это относится к перечислению возможных параметров при создании девайса.