Я изучаю DirectX 11 и достиг базовой части HLSL. Я хочу использовать несколько постоянных буферов в вершинном шейдере, поэтому мне нужно найти правильный StartSlot
для VSSetConstantBuffers
. Я искал в Google и обнаружил, что кто-то предложил использовать GetResourceBindingDescByName
.GetResourceBindingDescByName в DirectX 11 может получить только первый cbuffer
Я пробовал GetResourceBindingDescByName
, но обнаружил, что он может получить только правильный StartSlot
для первого cbuffer. Например, в моей вершинных шейдеров:
cbuffer Test1
{
float4 a;
};
cbuffer Test2
{
float4 b;
};
Теперь GetResourceBindingDescByName("Test1", &bind_desc)
работает правильно, но GetResourceBindingDescByName("Test2", &bind_desc)
не удастся (вернуть E_INVAILDARG
).
Может ли кто-нибудь мне помочь?
Используется ли b в вашем шейдере? Оптимизация может быть изменена. – galop1n
Спасибо. Я просто использую в своем шейдере. Я добавляю ссылку на b в свой шейдерный код, и проблема решена. Можете ли вы ответить на этот вопрос, чтобы я мог отметить его как ответ на этот вопрос? – delphifirst