Метод 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.
Комментарии
Вы можете грязное часть текстуры, заблокируя ее или вызвав один из следующих методов.
- IDirect3DCubeTexture9::AddDirtyRect
- IDirect3DTexture9::AddDirtyRect
- IDirect3DVolumeTexture9::AddDirtyBox
- IDirect3DDevice9::UpdateSurface
По соображениям производительности грязное области записываются только для нулевого уровня текстуры. Для подобласти предполагается, что соответствующий (масштабируемый) прямоугольник или прямоугольник также грязное. Грязные области автоматически записываются при вызове 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 |