PDD_CREATESURFACE función de devolución de llamada (ddrawint.h)

La función de devolución de llamada CreateD3DBuffer se usa para crear un comando de nivel de controlador o un búfer de vértices de la descripción especificada.

Sintaxis

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

Parámetros

unnamedParam1

Apunta a una estructura de DD_CREATESURFACEDATA que contiene la información necesaria para crear el búfer.

Valor devuelto

CreateD3DBuffer devuelve uno de los siguientes códigos de devolución de llamada:

Comentarios

Esta devolución de llamada solo se usa si el controlador administra los búferes de vértices y comandos de nivel de controlador.

De forma predeterminada, el controlador no se notifica cuando se crea una superficie principal en Windows 2000 y versiones posteriores. Sin embargo, si el controlador admite el GUID de GUID_NTPrivateDriverCaps en una llamada DdGetDriverInfo y la marca DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION se establece en el miembro dwPrivateCaps de la estructura DD_NTPRIVATEDRIVERCAPS , se notifica al controlador.

El tono debe devolverse en el miembro lPitch de las estructuras DD_SURFACE_GLOBAL y DDSURFACEDESC . Para la memoria lineal, el controlador debe establecer dwBlockSizeX en el tamaño, en bytes, de la región de memoria y establecer dwBlockSizeY en 1. Ambos son miembros de la estructura DD_SURFACE_GLOBAL.

Esta llamada tiene el mismo prototipo que DdCreateSurface. La devolución de llamada CreateD3DBuffer se usa en su lugar cuando la superficie en cuestión tiene la marca DDSCAPS_EXECUTEBUFFER establecida en el miembro ddsCaps de la estructura DD_SURFACE_LOCAL . Las marcas de creación del búfer se DDSCAPS_WRITEONLY, DDSCAPS2_VERTEXBUFFER y DDSCAPS2_COMMANDBUFFER.

El controlador determina el tipo de búfer que se solicita comprobando el miembro ddsCaps de la estructura DD_SURFACE_LOCAL para las marcas siguientes:

Marca Significado
DDSCAPS2_COMMANDBUFFER El controlador debe asignar un búfer de comandos.
DDSCAPS2_VERTEXBUFFER El controlador debe asignar un búfer de vértices explícito.
 
Nota Si no se establece ninguna marca, el controlador debe asignar un búfer de vértices implícito. Los búferes de vértices implícitos no deben colocarse en la memoria de vídeo porque se espera que sean de lectura y escritura. Solo los búferes de vértices explícitos con el conjunto de marcas de DDSCAPS_WRITEONLY se pueden colocar de forma segura en la memoria de vídeo.
 
El controlador puede asignar la propia memoria del búfer o puede solicitar que Microsoft DirectDraw realice la administración de memoria. Si el controlador realiza la asignación, debe escribir un puntero válido en la memoria del miembro fpVidMem de la estructura DD_SURFACE_GLOBAL .

Como alternativa, el controlador puede solicitar que DirectDraw asigne el búfer devolviendo uno de los siguientes valores en fpVidMem:

Valor Significado
DDHAL_PLEASEALLOC_BLOCKSIZE DirectDraw debe asignar la memoria del búfer de la memoria fuera de la pantalla.
DDHAL_PLEASEALLOC_USERMEM DirectDraw debe asignar la memoria del búfer de la memoria del usuario. El controlador también debe devolver el tamaño, en bytes, de la región de memoria en dwUserMemSize.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado ddrawint.h (incluya Winddi.h)

Consulte también

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo