Форум: "Игры";
Текущий архив: 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.056 c