Обновление мип-уровня текстуры после ее создания в D3D11

В Direct 3D 11 можно создать пустую текстуру, используя ID3D11DeviceContext::CreateTexture2D и обновите данные текселей, используя ID3D11DeviceContext::UpdateSubresource, указывающий требуемый уровень MIP для изменения в структуре D3D11_BOX. Хотя это возможно, можно ли изменить количество мип-уровней 2D-текстуры после ее создания в Direct 3D?

Я знаю, что этот вопрос напрашивается: «Зачем тебе это делать?!» ответ, но из-за некоторых требований к портированию/тестированию я вынужден это сделать.


person legends2k    schedule 04.09.2012    source источник
comment
При желании можно установить 0 для параметров MipLevels в D3D11_TEXTURE2D_DESC во время создания, чтобы на основе ширины и высоты D3D установил максимальные уровни mip (также передайте nullptr для SUB_RESOURCE_DATA ptr), а затем заполните уровни mipmap через UpdateSubresource.   -  person legends2k    schedule 08.09.2012


Ответы (1)


Нет, вы не можете изменить количество мипмапов после создания текстуры. Вы могли только создать другую текстуру и использовать ID3D11DeviceContext::CopySubresourceRegion для копирования требуемых мипмапов (хотя было бы лучше работать непосредственно с текстурой с правильными уровнями мипмапов...).

person xoofx    schedule 04.09.2012