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


Упаковка MIP-карт

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

Что может отличаться в разных реализациях, так это то, что, учитывая размеры, формат, количество MIP-карт и срезов массива, некоторые M mips (на срез массива) можно упаковать в некоторые плитки с номером N. СУЩЕСТВУЕТ API ID3D11Device2::GetResourceTiling , позволяющий драйверу сообщать приложению о том, что такое M и N (помимо прочих сведений о поверхности, которую сообщает этот API, которая является стандартной и не зависит от поставщика оборудования). Набор плиток для упакованных MIP-карт по-прежнему занимает 64 КБ и может быть отдельно сопоставлен в различных местах в пуле плиток. Однако форма пикселей в плитках и то, как MIP-карты размещаются в рамках набора плитки, зависит от поставщика оборудования, и этот вопрос слишком сложен для рассмотрения здесь. Таким образом, в один момент времени приложения должны либо сопоставлять все плитки, обозначенные как упакованные, либо не сопоставлять их вообще. В противном случае поведение для доступа к ресурсу с плиткой не определено.

Для поверхностей в массиве набор упакованных MIP-карт и количество упакованных плиток, в которых хранятся эти MIP-карты (M и N согласно описанию выше), применяется по отдельности для каждого фрагмента массива.

Выделенные API для копирования плиток (ID3D11DeviceContext2::CopyTiles и ID3D11DeviceContext2::UpdateTiles) не могут получить доступ к упакованным mips. Приложения, которые хотят копировать данные в упакованные mips и из нее, могут делать это с помощью всех API ресурсов, не относящихся к плиткам, для копирования и отрисовки на поверхности.

Способ мозаичного ресурса