ID do artigo: 262127 - Última revisão: segunda-feira, 12 de fevereiro de 2007 - Revisão: 2.4 INFO: Aprimorando o desempenho de driver do Windows CE vídeo: operações de desenho de linha
Nesta páginaSumárioA maioria dos drivers de vídeo Windows CE usam gráficos primitivos mecanismo (GPE) para fornecer padrão de processamento de primitivos de driver de vídeo. O método GPE::Line desenha linhas na superfície de destino usando os parâmetros fornecidos em GPELineParms e EGPEPhase estruturas de dados. Este artigo define as estruturas de dados GPELineParms e EGPEPhase e descreve como GPE desenha uma linha. O desenho padrão fornecido pelo GPE pode ser substituído no driver de vídeo por acelerações emulado em software ou por acelerações de hardware nativo, como discutido no capítulo Windows CE 2.12 Device Driver Kit sobre drivers de vídeo. Mais InformaçõesGPELineParms EstruturaGPELineParms é uma estrutura. GPELineParms é definido neste diretório de Platform Builder:Public\Common\Oak\Inc GPELineParms é usado por GPE e o driver de vídeo para controlar o desenho de linha. Alguns dos parâmetros na estrutura de vir diretamente do aplicativo ou o contexto de dispositivo atual. O restante são calculados por GPE.combinação GPELineParms é o valor ROP2. Ele consiste em dois bytes, um ROP2 para marca e um ROP2 para o espaço. O valor de cada bit no estilo escolhe entre os dois bytes no pParms-> mistura valor. GPELineParms iDir é o número de octant para a linha (um dos valores de 8, por algoritmo Bresenham). Octant eixo Y X-Dir-Dir 0 X-principais + 1 + 1 principais de Y 1 + 1 + 1 principais de Y 2-1 + 1 X 3-maior-1 + 1 4 X-principais-1-1 5 Y-principais-1-1 6 Y-principais-1 + 1 X 7-principais-1 + 1 EGPEPHASE enumeradas tipoEGPEPHASE é um tipo enumerado. EGPEPHASE é definido no diretório de Platform Builder seguinte:Public\Common\Oak\Inc Processamento de desenho de linhaPreparar faseDesenho de linha começa quando um aplicativo chama o método de polilinha. GDI manipula a chamada para o método de polilinha. GDI valida que há pelo menos dois vértices e o estilo de linha não é nulo. GDI, em seguida, chama a função GPE DrvStrokePath , ou para uma caneta grande, a função DrvFillPath . Quando o GDI chama a função de membro GPE, ele passa informações do contexto do dispositivo:
GPE, em seguida, chama função de linha do driver de vídeo, passando o GPELineParms e passando uma configuração EGPEPHASE de gpePrepare . O driver examina as propriedades de linha que está a serem desenhados. O driver, em seguida, escolhe se ele deseja usar a função GPE EmulatedLine ou lidar com a linha com sua própria função acelerada. Antes de selecionar uma função acelerada, o driver deve verificar se o hardware pode lidar com o estilo de linha e ROP. O driver de vídeo S3Trio64 (na pasta Platform Builder Platform\Cepc\Drivers\Display\S3trio64), o driver define o ponteiro de função por padrão para EmulatedLine, mas escolhe aceleração de hardware para linhas que estão na memória de vídeo e usar ROP 0x0D0D. O código de exemplo a seguir ilustra isso: DrvStrokePath gerencia desenho de cada segmentoApós determinar a função de desenho de linha do driver, a função DrvStrokePath executa loops seguintes. A ordem dos loops se destina a maximizar o recorte de hardware. Normalmente, um caminho pertença a apenas um dos retângulos de recorte.
É importante observar que para as linhas diagonais, valores do parâmetro dM , parâmetro de nome distinto (DN) , e erro termo llgamma campos de GPELineParms contêm informações sub-pixel. Essa informação deve ser usada quando inicializar o desenho de linha de hardware se registra. Caso contrário, as linhas diagonais que são cortadas são desenhadas incorretamente. Esse efeito pode ser bastante perceptível ao mover uma janela sobre outra janela que contém uma linha diagonal. Na fase de preparação, o driver executa uma inspeção geral dos parâmetros de linha para determinar se ele pode acelerá-lo. Quando a função de aceleração é chamada, o driver talvez precise executar a validação adicional. Isso ocorre porque quando função acelerado do driver é chamada, ele é para um segmento de caminho específico, cortado para uma região de recorte específicos. O driver precisa garantir que, por exemplo, o comprimento do segmento de linha não fará seus registradores de hardware para estouro de capacidade. Por exemplo, no driver S3Trio64, esse nível adicional de triagem ocorre no código a seguir. Porque os valores de nome distinto (DN) e dM originalmente são expressas em 1/16ths de pixels, iteradores de inclinação de hardware do dispositivo precisam ser capaz de manter esses tamanhos para qualquer segmento de linha é desenhado. Uma grande quantidade de hardware foi projetada para ser capaz de desenhar uma linha diagonal em toda a tela mas espera dM e os valores de nome distinto (DN) (ou equivalentes) para ser expressas em pixels. Porque GPE usa sub-pixel precisão, esses contadores precisam bits mais quatro (4). Para linhas curtas, não é um problema, mas para linhas longas esses valores podem estourar registradores resultando em linhas apenas zinging desativar alguns borda da tela ou até mesmo quebra automática em torno de algumas vezes. Embora as linhas diagonais são incomuns, linhas diagonais longo são extremamente raras para que o tempo gasto para processar linhas diagonais tempo usando a função EmulatedLine fique sem importância. Fase concluídaApós a função DrvStrokePath conclusão desenho de linha, o DrvStrokePath chama novamente linha função do driver dessa vez passando o conjunto EGPEphase para gpeComplete . O driver deve limpar qualquer estado de desenho de linha exigido pelo hardware neste momento.A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 262127
(http://support.microsoft.com/kb/262127/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesTraduções deste artigo |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início