ИТАК предполагая, у меня есть, где-то в моем шейдере заявление следующим образом (Примечание я позволяет унаследованную поддержке обмениваться шейдерами между DX9 и DX10):D3D10 HLSL: Как связать текстуру с глобальным Texture2D через отражение?
Texture2D DiffuseMap;
Я могу компилировать до шейдер без каких-либо проблем, но Я немного теряю, как привязать ShaderResourceView к «DiffuseMap». Когда я «Отражаю» шейдер, я предпочел бы, что он появится среди переменной в постоянном буфере. Это не так. На самом деле я не могу нигде идентифицировать его. Итак, как мне узнать, что текстура «stage» (использовать термин DX9), что я должен также привязать ShaderResourceView?
Редактировать: Я обнаружил, что могу определить имя сэмплера, используя «GetResourceBindingDesc». Я не уверен, что помогает мне вообще хотя :(
Edit2:. Точно так же я не заметил, что его же под DX9, а также ... то есть я могу только получить пробник
Edit3: Мой Texture2D и Sampler выглядеть следующим образом:
Texture2D DiffuseMap : DiffuseTexture;
sampler DiffuseSampler = sampler_state
{
Texture = (DiffuseMap);
MinFilter = Linear;
MaxFilter = Linear;
};
в настоящее время в работе эффект кадра я мог бы получить Texture2D семантическим «DiffuseTexture» Я мог бы установить ResourceView (D3D10)/Texture (D3D9) к Texture2D. Увы, похоже, нет никакого способа справиться с «семантикой», используя стандартные шейдеры (это было бы здорово узнать, как это делает D3D, но изучение структуры эффекта D3D11 никуда не делось, ар. Кажется, он читает его из двоичного, т. Е. Скомпилированного, данных, и я могу видеть только «DiffuseSampler» там).
У вас есть файл DX9 .fx (или просто .vs/.ps?) И хотите скомпилировать его и запустить в контексте DX10 с использованием отражения? – Stringer
Фактически ... да. – Goz
Хм, я вижу твою проблему сейчас. Но если у вас есть «DiffuseSampler», достаточно знать, что вам нужно привязать к данному слоту SRV диффузной текстуры, нет? Не уверен, что вам нужно связать также состояние сэмплера DX10, используя * SetSamplers в том же слоте. – Stringer