Compartir a través de


Datos de Superficie privada (Direct3D 9)

Puede almacenar cualquier tipo de datos específicos de la aplicación con una superficie. Por ejemplo, una superficie que representa un mapa en un juego podría contener información sobre el terreno.

Una superficie puede tener más de un búfer de datos privado. Cada búfer se identifica mediante un GUID que se proporciona al adjuntar los datos a la superficie.

Para almacenar datos de superficie privada, use SetPrivateData, pasando un puntero al búfer de origen, el tamaño de los datos y un GUID definido por la aplicación para los datos. Opcionalmente, los datos de origen pueden existir en forma de un objeto COM; en este caso, se pasa un puntero al puntero de interfaz IUnknown del objeto y se establece la marca D3DSPD_IUNKNOWNPOINTER.

SetPrivateData asigna un búfer interno para los datos y lo copia. A continuación, puede liberar de forma segura el búfer o el objeto de origen. La referencia de interfaz o búfer interno se libera cuando se llama a FreePrivateData. Esto sucede automáticamente cuando se libera la superficie.

Para recuperar datos privados para una superficie, debe asignar un búfer del tamaño correcto y, a continuación, llamar al método GetPrivateData, pasando el GUID que se asignó a los datos. Usted es responsable de liberar cualquier memoria dinámica que use para este búfer. Si los datos son un objeto COM, este método recupera el puntero IUnknown .

Si no sabe el tamaño de un búfer que se va a asignar, primero llame a GetPrivateData con cero en pSizeOfData. Si se produce un error en el método con D3DERR_MOREDATA, devuelve el número necesario de bytes para el búfer.

Superficies de Direct3D