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


Метод IDirect3DDevice9::UpdateTexture (d3d9helper.h)

Обновления грязное частей текстуры.

Синтаксис

HRESULT UpdateTexture(
  [in] IDirect3DBaseTexture9 *pSourceTexture,
  [in] IDirect3DBaseTexture9 *pDestinationTexture
);

Параметры

[in] pSourceTexture

Тип: IDirect3DBaseTexture9*

Указатель на интерфейс IDirect3DBaseTexture9 , представляющий исходную текстуру. Исходная текстура должна находиться в системной памяти (D3DPOOL_SYSTEMMEM).

[in] pDestinationTexture

Тип: IDirect3DBaseTexture9*

Указатель на интерфейс IDirect3DBaseTexture9 , представляющий текстуру назначения. Конечная текстура должна находиться в D3DPOOL_DEFAULT пуле памяти.

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

Тип: HRESULT

Если метод выполнен успешно, возвращаемое значение будет D3D_OK. Если метод завершается сбоем, возвращаемое значение можно D3DERR_INVALIDCALL.

Комментарии

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

IDirect3DDevice9::UpdateTexture извлекает грязное части текстуры, вычисляя, что было накоплено с момента последней операции обновления.

По соображениям производительности грязное области записываются только для нулевого уровня текстуры. Для подобласти предполагается, что соответствующий (масштабируемый) прямоугольник или прямоугольник также грязное. Грязные области автоматически записываются при вызове LockRect или IDirect3DVolumeTexture9::LockBox без D3DLOCK_NO_DIRTY_UPDATE или D3DLOCK_READONLY. Кроме того, область назначения IDirect3DDevice9::UpdateSurface помечается грязное.

Этот метод завершается ошибкой, если текстуры имеют разные типы, если их буферы нижнего уровня имеют разные размеры или если уровни сопоставления не совпадают. Например, рассмотрим шестиуровневую исходную текстуру со следующими измерениями.


32x16, 16x8, 8x4, 4x2, 2x1, 1x1

Эта шестиуровневая исходная текстура может быть источником для следующего одноуровневого назначения.


1x1

Для следующего двухуровневого назначения.


2x1, 1x1

Или для следующего трехуровневого назначения.


4x2, 2x1, 1x1

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

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

Ниже приведены возможности для сочетаний исходной и целевой поверхностей:

  • Если pSourceTexture является неавтономной MIP-картой, а pDestinationTexture — автоматически созданной MIP-картой, обновляется только самый верхний уровень сопоставления и создаются подуровки назначения. Все остальные вложенные значения источника игнорируются.
  • Если и pSourceTexture, и pDestinationTexture являются автоматически созданными MIP-картами, обновляется только самый верхний уровень сопоставления. Подобласти из источника игнорируются, а целевые подобласти повторно создаются.
  • Если pSourceTexture является автоматически созданной MIP-картой, а pDestinationTexture — неавтономной MIP-картой, updateTexture завершится ошибкой.

Требования

Требование Значение
Целевая платформа Windows
Header d3d9helper.h (включая D3D9.h)
Библиотека D3D9.lib

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

IDirect3D9::CreateDevice

IDirect3DDevice9