Bloquear recursos (Direct3D 9)

Bloquear un recurso significa conceder acceso de CPU a su almacenamiento. Las siguientes opciones de bloqueo se definen para los recursos:

  • D3DLOCK_DISCARD
  • D3DLOCK_READONLY
  • D3DLOCK_NOOVERWRITE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_NO_DIRTY_UPDATE

Para más información sobre las marcas de bloqueo y cómo se relacionan con recursos específicos, consulte las páginas de referencia de los métodos de bloqueo de recursos individuales. Los desarrolladores de aplicaciones deben tener en cuenta que las marcas de D3DLOCK_DISCARD, D3DLOCK_READONLY y D3DLOCK_NOOVERWRITE son solo sugerencias. El tiempo de ejecución no comprueba que las aplicaciones siguen la funcionalidad especificada por estas marcas. Una aplicación que especifica D3DLOCK_READONLY pero, a continuación, las escrituras en el recurso deben esperar resultados indefinidos. En general, no se garantiza que funcionen con marcas de bloqueo, incluidas las marcas de uso de bloqueo, en versiones posteriores y pueden suponer una penalización significativa del rendimiento.

Una operación de bloqueo va seguida de una operación de desbloqueo. Por ejemplo, después de bloquear una textura, la aplicación vuelve a renunciar posteriormente al acceso directo a texturas bloqueadas al desbloquearlas. Además de conceder acceso al procesador, cualquier otra operación que implique ese recurso se serialice durante el bloqueo. Solo se permite un bloqueo para un recurso, incluso para regiones no superpuestas, y no se pueden realizar operaciones de aceleración en una superficie mientras una operación de bloqueo está pendiente en esa superficie.

Cada interfaz de recursos tiene métodos para bloquear los búferes contenidos. Cada recurso de textura también puede bloquear una subtarea de ese recurso. Los recursos 2D (superficies) permiten el bloqueo de subctángulos y los recursos de volumen permiten el bloqueo de sub volúmenes o cajas. Cada método de bloqueo devuelve una estructura que contiene un puntero al almacenamiento que respalda el recurso y los valores que representan las distancias entre filas o planos de datos, según el tipo de recurso. Para obtener más información, consulte las listas de métodos para las interfaces de recursos. El puntero devuelto siempre apunta al byte superior izquierdo en las subárboles bloqueadas.

Al trabajar con búferes de índice y vértice, puede realizar varias llamadas de bloqueo; sin embargo, debe asegurarse de que el número de llamadas de bloqueo coincide con el número de llamadas de desbloqueo.

Los píxeles del almacén DXTn en bloques codificados de 4x4 y solo se pueden bloquear en límites de 4x4.

Recursos de Direct3D