Método IDirect3DDevice9::UpdateTexture (d3d9helper.h)

Novedades las partes sucias de una textura.

Sintaxis

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

Parámetros

[in] pSourceTexture

Tipo: IDirect3DBaseTexture9*

Puntero a una interfaz IDirect3DBaseTexture9 , que representa la textura de origen. La textura de origen debe estar en memoria del sistema (D3DPOOL_SYSTEMMEM).

[in] pDestinationTexture

Tipo: IDirect3DBaseTexture9*

Puntero a una interfaz IDirect3DBaseTexture9 , que representa la textura de destino. La textura de destino debe estar en el grupo de memoria de D3DPOOL_DEFAULT.

Valor devuelto

Tipo: HRESULT

Si el método se realiza correctamente, el valor devuelto es D3D_OK. Si se produce un error en el método, el valor devuelto se puede D3DERR_INVALIDCALL.

Comentarios

Puede ensuciar una parte de una textura bloqueandola o llamando a uno de los métodos siguientes.

IDirect3DDevice9::UpdateTexture recupera las partes sucias de la textura calculando lo que se ha acumulado desde la última operación de actualización.

Por motivos de rendimiento, las regiones desfasadas solo se registran en el nivel cero de una textura. En el caso de los subniveles, se supone que el rectángulo o el cuadro correspondientes también están sucios. Las regiones desfasadas se registran automáticamente cuando se llama a LockRect o IDirect3DVolumeTexture9::LockBox sin D3DLOCK_NO_DIRTY_UPDATE ni D3DLOCK_READONLY. Además, la superficie de destino de IDirect3DDevice9::UpdateSurface está marcada como desfasada.

Este método produce un error si las texturas son de tipos diferentes, si sus búferes de nivel inferior son de tamaños diferentes o si sus niveles coincidentes no coinciden. Por ejemplo, considere una textura de origen de seis niveles con las dimensiones siguientes.


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

Esta textura de origen de seis niveles podría ser el origen para el siguiente destino de un nivel.


1x1

Para el siguiente destino de dos niveles.


2x1, 1x1

O bien, para el siguiente destino de tres niveles.


4x2, 2x1, 1x1

Además, este método producirá un error si las texturas tienen formatos diferentes. Si la textura de destino tiene menos niveles que el origen, solo se copian los niveles coincidentes. Si la textura de origen tiene menos niveles que el destino, se producirá un error en el método.

Si la textura de origen tiene regiones desfasadas, la copia se puede optimizar restringiendo la copia solo a esas regiones. No se garantiza que solo se copien los bytes marcados como sucios.

Estas son las posibilidades de combinaciones de superficie de origen y destino:

  • Si pSourceTexture es un mapa mip no generado automáticamente y pDestinationTexture es un mapa mip generado automáticamente, solo se actualiza el nivel de coincidencia superior y se regeneran los subveles de destino. Se omiten todos los demás subveles de origen.
  • Si pSourceTexture y pDestinationTexture se generan automáticamente mapas mip, solo se actualiza el nivel de coincidencia superior. Los subveles del origen se omiten y se regeneran los subveles de destino.
  • Si pSourceTexture es un mapa mip generado automáticamente y pDestinationTexture, se producirá un error en un mapa mip no generado automáticamente.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d9helper.h (incluya D3D9.h)
Library D3D9.lib

Consulte también

IDirect3D9::CreateDevice

IDirect3DDevice9