Compartilhar via


PDD_CREATESURFACE função de retorno de chamada (ddrawint.h)

A função de retorno de chamada CreateD3DBuffer é usada para criar um comando no nível do driver ou um buffer de vértice da descrição especificada.

Sintaxe

PDD_CREATESURFACE PddCreatesurface;

DWORD PddCreatesurface(
  PDD_CREATESURFACEDATA unnamedParam1
)
{...}

Parâmetros

unnamedParam1

Aponta para uma estrutura DD_CREATESURFACEDATA que contém as informações necessárias para criar o buffer.

Retornar valor

CreateD3DBuffer retorna um dos seguintes códigos de retorno de chamada:

Comentários

Esse retorno de chamada será usado somente se o driver gerenciar buffers de vértice e comando no nível do driver.

Por padrão, o driver não é notificado quando uma superfície primária é criada no Windows 2000 e versões posteriores. No entanto, se o driver der suporte ao GUID GUID_NTPrivateDriverCaps em uma chamada DdGetDriverInfo e o sinalizador DDHAL_PRIVATECAP_NOTIFYPRIMARYCREATION for definido no membro dwPrivateCaps da estrutura DD_NTPRIVATEDRIVERCAPS , o driver será notificado.

O pitch deve ser retornado no membro lPitch das estruturas DD_SURFACE_GLOBAL e DDSURFACEDESC . Para memória linear, o driver deve definir dwBlockSizeX como o tamanho, em bytes, da região de memória e definir dwBlockSizeY como 1. Ambos são membros da estrutura DD_SURFACE_GLOBAL.

Essa chamada tem o mesmo protótipo que DdCreateSurface. O retorno de chamada CreateD3DBuffer é usado quando a superfície em questão tem o sinalizador DDSCAPS_EXECUTEBUFFER definido no membro ddsCaps da estrutura DD_SURFACE_LOCAL . Os sinalizadores de criação de buffer são DDSCAPS_WRITEONLY, DDSCAPS2_VERTEXBUFFER e DDSCAPS2_COMMANDBUFFER.

O driver determina o tipo de buffer que está sendo solicitado verificando o membro ddsCaps da estrutura DD_SURFACE_LOCAL para os seguintes sinalizadores:

Sinalizador Significado
DDSCAPS2_COMMANDBUFFER O driver deve alocar um buffer de comando.
DDSCAPS2_VERTEXBUFFER O driver deve alocar um buffer de vértice explícito.
 
Nota Se nenhum sinalizador for definido, o driver deverá alocar um buffer de vértice implícito. Buffers de vértice implícitos não devem ser colocados na memória de vídeo porque eles devem ser de leitura/gravação. Somente buffers de vértice explícitos com o sinalizador DDSCAPS_WRITEONLY definido podem ser colocados com segurança na memória de vídeo.
 
O driver pode alocar a memória do buffer em si ou pode solicitar que o Microsoft DirectDraw execute o gerenciamento de memória. Se o driver executar a alocação, ele deverá gravar um ponteiro válido na memória no membro fpVidMem da estrutura DD_SURFACE_GLOBAL .

Como alternativa, o driver pode solicitar que o DirectDraw aloque o buffer retornando um dos seguintes valores em fpVidMem:

Valor Significado
DDHAL_PLEASEALLOC_BLOCKSIZE O DirectDraw deve alocar a memória do buffer da memória fora da tela.
DDHAL_PLEASEALLOC_USERMEM O DirectDraw deve alocar a memória do buffer da memória do usuário. O driver também deve retornar o tamanho, em bytes, da região de memória em dwUserMemSize.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho ddrawint.h (inclua Winddi.h)

Confira também

DDSURFACEDESC

DD_CREATESURFACEDATA

DD_NTPRIVATEDRIVERCAPS

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL

DdCreateSurface

DdGetDriverInfo