За последний месяц или около того, я разорял себя, пытаясь изучить DirectX. Поэтому я смешался между DirectX 9 и 10. Один из основных изменений, которые я видел в этих двух, заключается в том, как обрабатывать векторы в графической карте.DirectX 9 HLSL против DirectX 10 HLSL: синтаксис такой же?
Одна из радикальных изменений, которые я замечаю, - это то, как вы получаете графический процессор для распознавания ваших структур. В DirectX 9 вы определяете гибкие форматы вершин.
Типичный набор вверх будет выглядеть так:
#define CUSTOMFVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)
В DirectX 10, я считаю, что эквивалент описание входных вершин:
D3D10_INPUT_ELEMENT_DESC layout[] = {
{"POSITION",0,DXGI_FORMAT_R32G32B32_FLOAT, 0 , 0,
D3D10_INPUT_PER_VERTEX_DATA, 0},
{"COLOR",0,DXGI_FORMAT_R32G32B32A32_FLOAT, 0 , 12,
D3D10_INPUT_PER_VERTEX_DATA, 0}
};
я замечаю в DirectX 10, больше описательный. Помимо этого, каковы некоторые из радикальных изменений, и синтаксис HLSL одинаковый для обоих?
FVF Не следует использовать в DX9, это просто слева от DX8, чтобы упростить перенос. Рекомендуется использовать массив D3DVERTEXELEMENT9 для описания расположения буфера (очень похоже на то, как это делает D3D10, за исключением того, что он использует фиксированный набор перечислений вместо строк для имен параметров) –