Поделиться через


Вариант размера текстур: половина/четверть

Уменьшает размеры текстур, не являющихся целевыми объектами отрисовки.

Интерпретация

Текстуры меньшего размера занимают меньше места в памяти и поэтому потребляют меньше пропускной способности памяти и снижают нагрузку на кэш текстур GPU. Однако более низкий уровень детализации снижает качество изображения, особенно при близком просмотре в трехмерной сцене или при просмотре в режиме увеличения.

Если этот вариант дает значительный прирост производительности, это может указывать на то, что приложение потребляет слишком много пропускной способности памяти, неэффективно использует кэш текстур или и то и другое. Это также может указывать на то, что текстуры занимают больше памяти, чем доступно в GPU, из-за чего они выгружаются в системную память.

Если приложение потребляет слишком много пропускной способности памяти или неэффективно использует кэш текстур, можно уменьшить размер текстур, но сначала рекомендуем попробовать включить MIP-карты для соответствующих текстур. Так же как текстуры меньшего размера, текстуры с MIP-картами потребляют меньше пропускной способности памяти, хотя и занимают больше памяти GPU. Они также повышают эффективность использования кэша, но не снижают детализацию текстур. Мы рекомендуем использовать MIP-карты во всех случаях, когда увеличение занимаемой памяти не приводит к выгрузке текстур в системную память.

Если занимаемая текстурами память превышает объем доступной памяти GPU, можно уменьшить размер текстур, но сначала рекомендуем попытаться сжать соответствующие текстуры. Так же как текстуры меньшего размера, сжатые текстуры занимают меньше памяти, что устраняет необходимость в их выгрузке в системную память, но точность цветовоспроизведения снижена. Сжатие подходит не для всех текстур (это зависит от их содержимого), например, оно не подходит для текстур со значительными вариациями цвета в пределах небольшой области. Но для многих текстур сжатие обеспечивает более высокое качество изображения, чем уменьшение размера.

Заметки

Размеры текстур уменьшаются при каждом вызове метода ID3D11Device::CreateTexture2D, который создает исходную текстуру. В частности, размеры текстуры уменьшаются, когда объект D3D11_TEXTURE2D_DESC, передаваемый в параметре pDesc, описывает текстуру, используемую при отрисовке, то есть:

  • Для члена BindFlags установлен только флаг D3D11_BIND_SHADER_RESOURCE.

  • Для члена MiscFlags не установлен флаг D3D11_RESOURCE_MISC_TILE_POOL или D3D11_RESOURCE_MISC_TILED (размеры плиточных ресурсов не изменяются).

  • Формат текстуры поддерживается в качестве целевого объекта отрисовки (определяется флагом D3D11_FORMAT_SUPPORT_RENDER_TARGET), что необходимо для уменьшения размеров текстуры. Форматы BC1, BC2 и BC3 также поддерживаются, хотя они не поддерживаются в качестве целевых объектов отрисовки.

Если исходные данные предоставляются приложением, перед созданием текстуры этот вариант масштабирует ее данные до соответствующего размера. Если исходные данные предоставляются в формате с блочным сжатием, таком как BC1, BC2 или BC3, они декодируются, масштабируются и снова кодируются перед созданием текстуры меньшего размера. (Из-за особенностей блочного сжатия, предполагающего дополнительные операции по декодированию, масштабированию и повторному кодированию, качество изображения почти всегда оказывается ниже, чем в случае, когда текстура с блочным сжатием создается на основе масштабированной версии текстуры, которая ранее не была закодирована.)

Если для текстуры включены MIP-карты, этот вариант сокращает число уровней MIP на один при уменьшении размеров вдвое или на два при уменьшении размеров в четыре раза.

Пример

Этот вариант изменяет размеры текстур во время выполнения перед вызовом метода CreateTexture2D. Мы не рекомендуем такой подход для рабочего кода, так как полноразмерные текстуры занимают больше места на диске, а дополнительное действие может увеличить время загрузки в приложении, особенно для сжатых текстур, на кодирование которых требуется значительное количество вычислительных ресурсов. Вместо этого мы рекомендуем изменять размер текстур с помощью редактора или обработчика изображений, включенного в процесс сборки. Таким образом можно сократить требования к дисковому пространству, устранить дополнительную нагрузку во время выполнения и получить дополнительное время на обработку, чтобы обеспечить максимальное качество изображения при уменьшении размеров или сжатии текстур.

См. также

Ссылки

Вариант создания MIP-карты

Вариант сжатия текстур BC