Compartilhar via


Command Buffer Structure

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

A reserva de comando é uma fila de símbolos de comando que mantém a Middleware Microsoft® Direct3D® Mobile. Cada token representa um único comando para o driver para analisar e executar. O driver deve ler tokens a reserva Comando em seqüência e em seqüência executar cada comando. Se o driver executa os símbolos out of seqüência, ele pode processar alguns pixels incorretamente.

Aplicativo mais chamadas para a Middleware Mobile Driect3D que pretendem para alteração de estado do driver ou desenhar no resultado Tela em tokens de escrita de middleware para a reserva de comando.

Normalmente, a Middleware envia os comandos na reserva para o driver e, em seguida, limpa a reserva quando os pixels afetados por símbolos de comando são exigido na Tela ou quando a comando reserva está cheio. Geralmente esse processo é conhecido como liberar a reserva de comando. Outras ocasiões onde a Middleware será liberado a reserva de comando durante bloqueios e durante chamadas para D3DM_GetInfo. Para obter mais informações, consulte Surface Locks in Direct3D Mobile

Para manter desempenho, o driver deve processo tokens comando imediatamente. Uma exceção a isso é o token gerado por IDirect3DMobileDevice::Present. Esse token pode exigir o driver para aguardar até que um em branco vertical intervalo período antes de ele pode ser executado. Esse token só é encontrado no final de uma reserva de comando; Ele permite que o driver para retornar de um chamar para D3DM_DrawPrimitive Enquanto o final Presente chamar ainda está pendente.

A Middleware Mobile Direct3D libera seu reserva Comando por chamado do driver D3DM_DrawPrimitive método com uma estrutura D3DM_DRAWPRIMITIVE_DATA.

Cada comando consiste de uma estrutura cabeçalho, D3DM_COMMAND, seguido por alguns contagem de estruturas Command-specific. O cabeçalho para cada comando segue imediatamente final dos dados de comando para o comando antes dele. Como comando buffers são sempre 32 - bit alinhado, o cabeçalho comando estrutura e todas as estruturas dados comando são alguns múltiplo de 32 bits. Conseqüentemente, aritmético ponteiro todos os envolvidos na análise uma reserva de comando deve ser 32bit alinhado.

Métodos que controle a trabalhar Gerenciador recurso imediatamente; Eles não são armazenada em buffer na reserva de comando.

Buffer de comando padrão

Quando a Middleware Mobile Direct3D cria um novo contexto COM do o driver D3DM_CreateContext função, ela prepara uma reserva Comando usar como padrão que ela passa para do o driver D3DM_DrawPrimitive função imediatamente após a criação de contexto. A seguinte lista descreve esses casos.

  • A Middleware determina qual formato número enviar para o driver com símbolos D3DMOP_TRANSFORM para D3DMTS_VIEW, D3DMTS_PROJECTION, D3DMTS_WORLD e D3DMTS_TEXTUREn transformações, consulte D3DM_OPERATION e D3DMTRANSFORMSTATETYPE.
  • A Middleware determina o número de com suporte textura testa e, em seguida, restringe os símbolos D3DMOP_TEXTURESTAGESTATE no comando usar como padrão-reserva apenas com um estágio que com suporte, o driver.

Normalmente, a reserva Comando usar como padrão seja adequada para os bits funcionalidade que expõe o driver. Ele inicializa todos os vários estado variáveis no driver para valores usar como padrão. Como esse processo inicializa todas as variáveis, variáveis podem ser inicializadas para recursos de driver não suporte. O driver pode ignorar essas estado valores.

Valores padrão do driver estado

O estado driver usar como padrão inclui matrizes transformação. Transformação Todas as matrizes são definidas como matriz de identidade. O formato de dados das matrizes depende se o driver anuncia próprio como fixo ou nativo FLOAT, conforme descrito por bit de funcionalidade D3DMDEVCAPS_NATIVEFLOAT, consulte D3DMDEVCAPS Values. As matrizes incluem todos os coordenar do estágio 4 textura matrizes transformação, mesmo se o driver não transformação de textura suporte, ou dá suporte a menor que 4 estágios.

O estado driver usar como padrão também inclui a porta de visualização. A porta de visualização usar como padrão é a área cliente inteiro da janela de dispositivo. Se o nível cooperativas estiver definido para Total-Tela, em seguida, a porta de visualização usar como padrão é a Tela inteira. O valor mínimo z usar como padrão para a porta de visualização é definida como 0 e o máximo é definido como 1.

O material inicial é definido como simple preto. Todos os parâmetros cor estiverem definidos como preto (0,0,0,0) e a energia especulares é definida como 0.

Também inclui o estado driver usar como padrão NULL índice e símbolos de comando reserva vértice.

Por padrão, não as texturas estão ligado porque não existe nada quando o driver é inicializado. Há um conjunto usar como padrão de textura estados do estágio que são carregados na todos os valores para todos os estágios possíveis 4. O driver pode ignorar quaisquer valores que não aplicar aos recursos ele oferece suporte.

A seguinte tabela mostra o estado do estágio de textura usar como padrão valores.

Estado do estágio textura Padrão

D3DMTSS_ADDRESSU

D3DMTADDRESS_WRAP

D3DMTSS_ADDRESSV

D3DMTADDRESS_WRAP

D3DMTSS_ADDRESSW

D3DMTADDRESS_WRAP

D3DMTSS_ALPHAARG0

D3DMTA_CURRENT

D3DMTSS_ALPHAARG1

D3DMTA_TEXTURE

D3DMTSS_ALPHAARG2

D3DMTA_CURRENT

D3DMTSS_ALPHAOP

D3DMTOP_SELECTARG1 de estágio 0

D3DMTOP_DISABLE para outras etapas

D3DMTSS_BORDERCOLOR

0 (preto)

D3DMTSS_COLORARG0

D3DMTA_CURRENT

D3DMTSS_COLORARG1

D3DMTA_TEXTURE

D3DMTSS_COLORARG2

D3DMTA_CURRENT

D3DMTSS_COLOROP

D3DMTOP_MODULATE de estágio 0

D3DMTOP_DISABLE para outras etapas

D3DMTSS_MAGFILTER

D3DMTEXF_POINT

D3DMTSS_MAXANISOTROPY

1

D3DMTSS_MAXMIPLEVEL

0

D3DMTSS_MINFILTER

D3DMTEXF_POINT

D3DMTSS_MIPFILTER

D3DMTEXF_NONE

D3DMTSS_MIPMAPLODBIAS

0

D3DMTSS_RESULTARG

D3DMTA_CURRENT

D3DMTSS_TEXCOORDINDEX

0

D3DMTSS_TEXTURETRANSFORMFLAGS

D3DMTTFF_DISABLE

A seguinte tabela mostra o estado processar usar como padrão valores.

Estado de Processamento Valor padrão

D3DMRS_ALPHABLENDENABLE

FALSE

D3DMRS_ALPHAFUNC

D3DMCMP_ALWAYS

D3DMRS_ALPHAREF

0

D3DMRS_ALPHATESTENABLE

FALSE

D3DMRS_AMBIENT

0 (Preto)

D3DMRS_AMBIENTMATERIALSOURCE

D3DMMCS_MATERIAL

D3DMRS_BLENDOP

D3DMBLENDOP_ADD

D3DMRS_CLIPPING

TRUE

D3DMRS_COLORVERTEX

TRUE

D3DMRS_COLORWRITEENABLE

D3DMCOLORWRITEENABLE_ALL

D3DMRS_CULLMODE

D3DMCULL_CCW

D3DMRS_DEPTHBIAS

0

D3DMRS_DESTBLEND

D3DMBLEND_ZERO

D3DMRS_DIFFUSEMATERIALSOURCE

D3DMMCS_COLOR1

D3DMRS_DITHERENABLE

FALSE

D3DMRS_FILLMODE

D3DMFILL_SOLID

D3DMRS_FOGCOLOR

0

D3DMRS_FOGDENSITY

0

D3DMRS_FOGENABLE

FALSE

D3DMRS_FOGEND

0

D3DMRS_FOGSTART

0

D3DMRS_FOGTABLEMODE

D3DMFOG_NONE

D3DMRS_FOGVERTEXMODE

D3DMFOG_NONE

D3DMRS_LASTPIXEL

TRUE

D3DMRS_LIGHTING

TRUE

D3DMRS_LOCALVIEWER

TRUE

D3DMRS_NORMALIZENORMALS

FALSE

D3DMRS_RANGEFOGENABLE

FALSE

D3DMRS_SHADEMODE

D3DMSHADE_GOURAUD

D3DMRS_SLOPESCALEDEPTHBIAS

0

D3DMRS_SPECULARENABLE

FALSE

D3DMRS_SPECULARMATERIALSOURCE

D3DMMCS_COLOR2

D3DMRS_SRCBLEND

D3DMBLEND_ONE

D3DMRS_STENCILENABLE

FALSE

D3DMRS_STENCILFAIL

D3DMSTENCILOP_KEEP

D3DMRS_STENCILFUNC

D3DMCMP_ALWAYS

D3DMRS_STENCILMASK

0xFFFFFFFF

D3DMRS_STENCILPASS

D3DMSTENCILOP_KEEP

D3DMRS_STENCILREF

0

D3DMRS_STENCILWRITEMASK

0xFFFFFFFF

D3DMRS_STENCILZFAIL

D3DMSTENCILOP_KEEP

D3DMRS_TEXTUREFACTOR

0xFFFFFFFF (branco)

D3DMRS_TEXTUREPERSPECTIVE

FALSE

D3DMRS_WRAP0

0

D3DMRS_WRAP1

0

D3DMRS_WRAP2

0

D3DMRS_WRAP3

0

D3DMRS_ZENABLE

TRUE (D3DMZB_TRUE) se D3DMPRESENT_PARAMETERS.EnableAutoDepthStencil foi definido para TRUE, FALSE caso contrário.

D3DMRS_ZFUNC

D3DMCMP_LESSEQUAL

D3DMRS_ZWRITEENABLE

TRUE se o EnableAutoDepthStencil membro de D3DMPRESENT_PARAMETERS é TRUE

FALSE caso contrário.

See Also

Concepts

Driver Interactions with the Direct3D Mobile Middleware