Compartilhar via


Estrutura DDLOCKOUT (ddkmapi.h)

A estrutura DDLOCKOUT contém uma descrição da superfície.

Sintaxe

typedef struct _DDLOCKOUT {
  DWORD ddRVal;
  DWORD dwSurfHeight;
  DWORD dwSurfWidth;
  LONG  lSurfPitch;
  PVOID lpSurface;
  DWORD SurfaceCaps;
  DWORD dwFormatFlags;
  DWORD dwFormatFourCC;
  DWORD dwFormatBitCount;
  union {
    DWORD dwRBitMask;
    DWORD dwYBitMask;
  };
  union {
    DWORD dwGBitMask;
    DWORD dwUBitMask;
  };
  union {
    DWORD dwBBitMask;
    DWORD dwVBitMask;
  };
} DDLOCKOUT, *LPDDLOCKOUT;

Membros

ddRVal

Especifica o local no qual o Microsoft DirectDraw grava o valor retornado da função DxApi para operações de DD_DXAPI_LOCK. Um código de retorno de DD_OK indica êxito.

dwSurfHeight

dwSurfWidth

Especifique as dimensões da superfície, em pixels.

lSurfPitch

Especifica a distância, em bytes, até o início da próxima linha.

lpSurface

Aponta para a memória da superfície.

SurfaceCaps

Indica um conjunto de sinalizadores que especificam os recursos da superfície. Esse membro pode ser definido como um ou mais dos seguintes sinalizadores:

Bandeira Significado
DDSCAPS_3DDEVICE Essa superfície pode ser usada para renderização 3D. Os aplicativos podem usar esse sinalizador para garantir que um dispositivo que só pode renderizar em um determinado heap tenha superfícies fora da tela alocadas do heap correto. Se esse sinalizador estiver definido para um heap, a superfície não será alocada desse heap.
DDSCAPS_ALLOCONLOAD A memória da superfície não é alocada até que a superfície seja carregada pelo aplicativo usando o método IDirect3DDevice7::Load.
DDSCAPS_ALPHA Esta superfície contém informações alfa. O formato de pixel deve ser consultado para determinar se essa superfície contém apenas informações alfa ou informações alfa entrelaçadas com dados de cor de pixel (como RGBA ou YUVA).
DDSCAPS_BACKBUFFER Essa superfície é o buffer traseiro de uma estrutura de inversão de superfície. Normalmente, essa funcionalidade é definida pelo método CreateSurface do aplicativo quando o sinalizador de DDSCAPS_FLIP é usado. Somente a superfície que precede imediatamente a superfície DDSCAPS_FRONTBUFFER tem esse conjunto de funcionalidades. As outras superfícies são identificadas como buffers de fundo pela presença do sinalizador de DDSCAPS_FLIP, sua ordem de anexo e a ausência dos recursos de DDSCAPS_FRONTBUFFER e DDSCAPS_BACKBUFFER. Se essa funcionalidade for enviada para o método CreateSurface do aplicativo, um buffer de back autônomo será criado. Depois que esse método for chamado, essa superfície poderá ser anexada a um buffer frontal, outro buffer traseiro ou ambos para formar uma estrutura de superfície invertida. Para obter mais informações, consulte o método AddAttachedSurface na documentação do SDK do DirectX. O DirectDraw dá suporte a um número arbitrário de superfícies em uma estrutura de inversão.
DDSCAPS_COMPLEX Uma superfície complexa está sendo descrita. Uma superfície complexa resulta na criação de mais de uma superfície. As superfícies adicionais são anexadas à superfície raiz. A estrutura complexa só pode ser destruída destruindo a raiz.
DDSCAPS_FLIP Essa superfície faz parte de uma estrutura de inversão de superfície. Quando essa funcionalidade é passada para o método CreateSurface do aplicativo, um buffer frontal e um ou mais buffers de fundo são criados. O DirectDraw define o bit DDSCAPS_FRONTBUFFER na superfície do buffer frontal e o bit DDSCAPS_BACKBUFFER na superfície adjacente à superfície do buffer frontal. O dwBackBufferCount membro da estrutura de DDSURFACEDESC deve ser definido como pelo menos 1 para que a chamada de método seja bem-sucedida. A funcionalidade DDSCAPS_COMPLEX sempre deve ser definida ao criar várias superfícies usando o método CreateSurface .
DDSCAPS_FRONTBUFFER Essa superfície é o buffer frontal de uma estrutura de inversão de superfície. Esse sinalizador normalmente é definido pelo método CreateSurface do aplicativo quando a funcionalidade de DDSCAPS_FLIP é definida. Se essa funcionalidade for enviada para o método CreateSurface, um buffer frontal autônomo será criado. Essa superfície não terá a funcionalidade de DDSCAPS_FLIP. Ele pode ser anexado a outros buffers traseiros para formar uma estrutura de inversão usando o método AddAttachedSurface do aplicativo.
DDSCAPS_HWCODEC Essa superfície deve ser capaz de ter um fluxo descompactado pelo hardware.
DDSCAPS_LIVEVIDEO Essa superfície deve ser capaz de receber vídeo ao vivo.
DDSCAPS_LOCALVIDMEM Essa superfície existe na memória de exibição local verdadeira, em vez de memória de exibição não local. Se esse sinalizador for especificado, DDSCAPS_VIDEOMEMORY também deverá ser especificado. Esse sinalizador não pode ser usado com o sinalizador DDSCAPS_NONLOCALVIDMEM.
DDSCAPS_MIPMAP Essa superfície é um nível de um mipmap. Essa superfície será anexada a outras superfícies DDSCAPS_MIPMAP para formar o mipmap. Isso pode ser feito explicitamente criando várias superfícies e anexando-as usando o método AddAttachedSurface do aplicativo ou implicitamente pelo método CreateSurface do aplicativo. Se essa funcionalidade estiver definida, DDSCAPS_TEXTURE também deverá ser definida.
DDSCAPS_MODEX Essa superfície é uma superfície 320x200 ou 320x240 Modo X.
DDSCAPS_NONLOCALVIDMEM Essa superfície existe na memória de exibição não local, em vez de na memória de exibição local verdadeira. Se esse sinalizador for especificado, DDSCAPS_VIDEOMEMORY sinalizador também deverá ser especificado. Isso não pode ser usado com o sinalizador DDSCAPS_LOCALVIDMEM.
DDSCAPS_OFFSCREENPLAIN Essa superfície é qualquer superfície fora da tela que não seja uma sobreposição, textura, buffer z, buffer frontal, back-buffer ou superfície alfa. Ele é usado para identificar superfícies simples.
DDSCAPS_OPTIMIZED Não implementado no momento.
DDSCAPS_OVERLAY Essa superfície é uma sobreposição. Ele pode ou não estar diretamente visível dependendo se está sendo sobreposto à superfície primária. DDSCAPS_VISIBLE pode ser usado para determinar se ele está sendo sobreposto no momento.
DDSCAPS_OWNDC Essa superfície terá uma associação de DC (contexto de dispositivo) por um longo período.
DDSCAPS_PALETTE Esse driver de dispositivo permite que objetos DirectDrawPalette exclusivos sejam criados e anexados a essa superfície.
DDSCAPS_PRIMARYSURFACE A superfície é a superfície primária. Ele representa o que está visível para o usuário no momento.
DDSCAPS_PRIMARYSURFACELEFT Essa superfície é a superfície primária para o olho esquerdo. Ele representa o que está visível para o olho esquerdo do usuário no momento. Quando essa superfície é criada, a superfície com a funcionalidade DDSCAPS_PRIMARYSURFACE representa o que é visto pelo olho direito do usuário.
DDSCAPS_STANDARDVGAMODE Essa superfície é uma superfície de modo VGA padrão e não uma superfície ModeX. Esse sinalizador não pode ser usado em combinação com o sinalizador DDSCAPS_MODEX.
DDSCAPS_SYSTEMMEMORY Essa memória de superfície foi alocada na memória do sistema.
DDSCAPS_TEXTURE Essa superfície pode ser usada como uma textura 3D. Ele não indica se a superfície está sendo usada para essa finalidade.
DDSCAPS_VIDEOMEMORY Essa superfície existe na memória de exibição.
DDSCAPS_VIDEOPORT Essa superfície pode receber dados de uma porta de vídeo de hardware.
DDSCAPS_VISIBLE As alterações feitas nessa superfície são imediatamente visíveis. Ele é sempre definido para a superfície primária, bem como para sobreposições enquanto eles estão sendo sobrepostos e mapas de textura enquanto estão sendo texturizados.
DDSCAPS_WRITEONLY Somente o acesso de gravação é permitido à superfície. O acesso de leitura da superfície pode gerar uma GPF (falha de proteção geral), mas os resultados de leitura dessa superfície não são significativos.
DDSCAPS_ZBUFFER Essa superfície é o buffer z. O buffer z contém informações que não podem ser exibidas. Em vez disso, ele contém informações de profundidade de bit que são usadas para determinar quais pixels são visíveis e quais são obscurecidos.

dwFormatFlags

Especifica um conjunto de sinalizadores de controle opcionais. Esse membro pode ser definido como uma combinação dos seguintes sinalizadores:

Bandeira Significado
DDPF_ALPHA O formato de pixel descreve uma superfície somente alfa.
DDPF_ALPHAPIXELS A superfície tem informações de canal alfa no formato de pixel.
DDPF_ALPHAPREMULT Reservado para uso do sistema.
DDPF_BUMPDUDV Os dados dUdV do mapa de colisão no formato pixel são válidos.
DDPF_BUMPLUMINANCE Os dados de luminância no formato pixel são válidos. Esse sinalizador é usado ao desligar a luminância de superfícies de bumpmap; a máscara de bits da parte de luminância do pixel é indicada pelo membro dwBumpLuminanceBitCount da estrutura de DDPIXELFORMAT .
DDPF_COMPRESSED A superfície aceita dados de pixel no formato especificado e os compacta durante a operação de gravação.
DDPF_FOURCC O código de FOURCC é válido.
DDPF_LUMINANCE Os dados de luminância no formato pixel são válidos. Esse sinalizador é usado apenas para luminância ou luminância mais superfícies alfa; A profundidade do bit é indicada pelo membro dwLuminanceBitCount da estrutura DDPIXELFORMAT.
DDPF_PALETTEINDEXED1 A superfície é indexada por cor de 1 bit.
DDPF_PALETTEINDEXED2 A superfície é indexada por cores de 2 bits.
DDPF_PALETTEINDEXED4 A superfície é indexada por cores de 4 bits.
DDPF_PALETTEINDEXED8 A superfície é indexada por cores de 8 bits.
DDPF_PALETTEINDEXEDTO8 A superfície é de 1, 2 ou 4 bits indexada a uma paleta de 8 bits.
DDPF_RGB Os dados RGB na estrutura de formato de pixel são válidos.
DDPF_RGBTOYUV A superfície aceita dados RGB e os converte durante a operação de gravação em dados YUV. O formato dos dados a serem gravados está contido na estrutura de formato de pixel. O sinalizador DDPF_RGB está definido.
DDPF_STENCILBUFFER A superfície contém informações de estêncil junto com as informações de Z.
DDPF_YUV Os dados YUV na estrutura de formato de pixel são válidos.
DDPF_ZBUFFER O formato de pixel descreve uma superfície somente de buffer z.
DDPF_ZPIXELS A superfície está no formato RGBZ.

dwFormatFourCC

Especifica o código de FOURCC. Para obter mais informações sobre códigos FOURCC, consulte a documentação do SDK do DirectX.

dwFormatBitCount

Especifica o número de bits por pixel (4, 8, 16, 24 ou 32) dos dados RGB ou YUV.

dwRBitMask

Especifica a máscara para bits vermelhos.

dwYBitMask

Especifica a máscara para bits Y.

dwGBitMask

Especifica a máscara para bits verdes.

dwUBitMask

Especifica a máscara para bits U.

dwBBitMask

Especifica a máscara para bits azuis.

dwVBitMask

Especifica a máscara para bits V.

Requisitos

Requisito Valor
cabeçalho ddkmapi.h (inclua Ddkmapi.h)

Consulte também

DD_DXAPI_LOCK

DxApi