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


Метод ID3D11DeviceContext2::UpdateTiles (d3d11_2.h)

Обновления плитки путем копирования из памяти приложения в ресурс с плиткой.

Синтаксис

void UpdateTiles(
  [in] ID3D11Resource                        *pDestTiledResource,
  [in] const D3D11_TILED_RESOURCE_COORDINATE *pDestTileRegionStartCoordinate,
  [in] const D3D11_TILE_REGION_SIZE          *pDestTileRegionSize,
  [in] const void                            *pSourceTileData,
  [in] UINT                                  Flags
);

Параметры

[in] pDestTiledResource

Тип: ID3D11Resource*

Указатель на обновляемую плитку ресурса.

[in] pDestTileRegionStartCoordinate

Тип: const D3D11_TILED_RESOURCE_COORDINATE*

Указатель на структуру D3D11_TILED_RESOURCE_COORDINATE , описывающую начальные координаты мозаичного ресурса.

[in] pDestTileRegionSize

Тип: const D3D11_TILE_REGION_SIZE*

Указатель на структуру D3D11_TILE_REGION_SIZE , описывающую размер мозаичной области.

[in] pSourceTileData

Тип: const void*

Указатель на память, содержащую исходные данные плитки, которые UpdateTiles использует для обновления ресурса с плиткой.

[in] Flags

Тип: UINT

Сочетание D3D11_TILE_COPY_FLAG типизированных значений, объединенных с помощью побитовой операции ИЛИ. Единственное допустимое значение — D3D11_TILE_COPY_NO_OVERWRITE. Другие значения здесь не имеют смысла, хотя по определению значение D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE в основном то, что делает UpdateTiles , но источники из памяти приложения.

Возвращаемое значение

None

Remarks

UpdateTiles удаляет операции записи в несопоставленные области (за исключением Tier_1 фрагментированных ресурсов, где запись в несопоставленные области недопустима).

Если операция копирования включает запись в одно и то же расположение памяти несколько раз, так как несколько расположений в целевом ресурсе сопоставляются с одной и той же памятью плитки, результирующая операция записи в многосоставные плитки не детерминирована и не воспроизводима; то есть доступ к памяти плитки происходит в любом порядке, в каком оборудование выполняет операцию копирования.

Плитки, участвующие в операции копирования, не могут содержать плитки, содержащие упакованные MIP-карты, или результаты операции копирования не определены. Для передачи данных в MIP-карты и из них, которые оборудование упаковывает в одну плитку, необходимо использовать стандартные API копирования и обновления (например , ID3D11DeviceContext1::CopySubresourceRegion1 и ID3D11DeviceContext1::UpdateSubresource1) или ID3D11DeviceContext::GenerateMips для всей цепочки MIP-карт.

Структура памяти данных на стороне источника операции копирования является линейной в памяти в пределах 64 КБ плиток, которые оборудование и драйвер преобразовывают и деwizzle на плитку соответствующим образом при передаче в ресурс плитки и из нее. Для поверхностей с сглаживания с несколькими выборками (MSAA) оборудование и драйвер просматривают выборки каждого пикселя в порядке выборки по индексу выборки, прежде чем переходить к следующему пикселю. Для плиток, частично заполненных с правой стороны (для поверхности с шириной, которая не кратна ширине плитки в пикселях), шаг и шаг для перемещения вниз по строке — это полный размер в байтах числа пикселей, которые поместятся по всей плитке, если плитка заполнена. Таким образом, между каждой строкой пикселей в памяти может быть разрыв. MIP-карты, которые меньше плитки, не упаковываются вместе в линейном макете, что может показаться пустой тратой памяти, но, как уже упоминалось, вы не можете использовать ID3D11DeviceContext2::CopyTiles или UpdateTiles для копирования в MIP-карты, которые оборудование упаковывает вместе. Вы можете просто использовать универсальные API копирования и обновления (например , ID3D11DeviceContext1::CopySubresourceRegion1 и ID3D11DeviceContext1::UpdateSubresource1) для копирования небольших MIP-карт по отдельности. Хотя в случае с универсальным API копирования (например , ID3D11DeviceContext1::CopySubresourceRegion1) линейная память должна иметь тот же размер, что и ресурс с плитками; ID3D11DeviceContext1::CopySubresourceRegion1 , например, не может копировать данные из буферного ресурса в Texture2D.

Дополнительные сведения о мозаичного ресурсах см. в разделе Плитки ресурсов.

Требования

   
Минимальная версия клиента Windows 8.1 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header d3d11_2.h
Библиотека D3D11.lib

См. также раздел

ID3D11DeviceContext2