2013-06-19 4 views
2

Мне интересно, можно ли получить имена переменных Texture2D и SamplerState. Я знаю, что я могу получить их через эффекты Framework. Но я ищу способ без этой Framework. Как и с Constantbuffers (ShaderReflection). Я хочу сделать HLSL код, как этотSharpDx get Shader variable Имена Texture2D, SamplerState

Texture2D tex0; 
    Texture2D bg; 

Кто-нибудь есть идеи, как я мог бы быть в состоянии получить доступ к VariableNames без EffectsFramework?

+0

Я не знаю ответа, но мне это тоже интересно. Вы можете получить ответ, если вы спросите на форуме [SharpDX] (http://sharpdx.org/forum). – shoelzer

ответ

2

Хорошо, довольно просто здесь, сначала скомпилируйте свой шейдер, чтобы получить байт-код.

Затем создайте экземпляр ShaderReflection

byte[] yourbytecode; 
SharpDX.D3DCompiler.ShaderReflection sr; 
sr = new ShaderReflection(yourbytecode); 

Чтобы найти, сколько ресурсов связаны:

int ResourceCount = sr.Description.BoundResources; 

Затем, чтобы получить подробную информацию о нем:

InputBindingDescription desc = sr.GetResourceBindingDescription(index); 

Он содержит имя, измерение и другие данные usefule.

+0

славный Спасибо! – Rey

Смежные вопросы