Как обновить ресурсы сэмплера
Sampler::Sampler(Graphics& gfx)
{
D3D11_SAMPLER_DESC samplerDesc = {};
samplerDesc.Filter = D3D11_FILTER_ANISOTROPIC;
samplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP;
samplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP;
samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP;
samplerDesc.MaxAnisotropy = D3D11_REQ_MAXANISOTROPY;
samplerDesc.MipLODBias = .0f;
samplerDesc.MinLOD = .0f;
samplerDesc.MaxLOD = D3D11_FLOAT32_MAX;
GetDevice(gfx)->CreateSamplerState(&samplerDesc, &pSampler);
}
class Sampler
{
public:
Sampler(Graphics& gfx);
protected:
Microsoft::WRL::ComPtr<ID3D11SamplerState> pSampler;
};
Подскажите, как обновить данные сэмплера в рантайме, например, я хочу поменять фильтрацию. Что мне для этого надо сделать? Я только изучаю DX
Ответы (1 шт):
Автор решения: user7860670
→ Ссылка
Объекты состояния семплера являются неизменяемыми. Соответственно для того чтобы поменять фильтрацию или любой другой параметр семплера, необходимо создать еще один объект состояния семплера. А затем выбрать нужный уже при рендеринге посредством метода ID3D11DeviceContext::PSSetSamplers и т.п. Обычно состояния семплера являются достаточно перманентными ресурсами, т.е. все нужные состояния создаются один раз в начале.
ЗЫ результат выполнения CreateSamplerState необходимо проверять.