Suporte a desenho de linha no D3DX (Direct3D 9)

D3DX é uma biblioteca de utilitários que fornece serviços auxiliares. É uma camada acima do componente Direct3D.

O D3DX dá suporte a linhas suavizadas de pixel único. Não há mais suporte para padrões de linha.

A biblioteca de desenho de linha emula linhas usando triângulos de textura e pressupõe o seguinte:

  • O hardware está disponível por meio das interfaces do Direct3D 9.
  • Pelo menos um estágio de textura está disponível.
  • São usadas texturas 64 x 64.
  • Os seguintes métodos estão disponíveis:
    • Filtragem bilinear
    • Modo de endereço de fixação
    • Encapsular o modo de endereço
    • Módulo de operação alfa
    • Mistura alfa (SRCBLEND = SRC_ALPHA, DESTBLEND = INV_SRC_ALPHA)
    • Teste alfa se a mesclagem alfa não estiver disponível; resultado de qualidade inferior

Para renderização de linha suavizada em destinos de renderização de várias instâncias, use ID3DXLine que gera polígonos texturizados. Os valores de cobertura de pixel, gerados pela rasterização de linha suavizada, modulam o valor alfa do pixel calculado pelo sombreador de pixel. Para desenhar uma linha suavizada, um aplicativo deve habilitar a mesclagem alfa e, em seguida, deve definir o estado de renderização D3DRS_ANTIALIASEDLINEENABLE como TRUE.

Descrição da funcionalidade

A biblioteca dá suporte ao desenho de faixas de linha coloridas com os seguintes recursos de linha, cada um independente de qualquer outro:

  • Largura da linha
  • Padrão de linha com repetição (o contador de padrões de linha é redefinido com cada chamada ID3DXLine::D raw ou ID3DXLine::D rawTransform . Ele não é redefinido com cada segmento da faixa de linha.)
  • Suavização
  • Linhas no estilo OpenGL

Observação

Não há suporte para miteração.

 

A biblioteca usa suporte nativo de desenho de linha de hardware (se disponível no dispositivo) somente se:

  • A largura da linha é 1.
  • Nenhum padrão de linha está habilitado.

Há suporte para linhas suavizadas de pixel único em todo o hardware, portanto, a biblioteca usa isso, se disponível. O membro LineCaps da estrutura D3DCAPS9 enumera recursos de hardware para primitivos de desenho de linha.

Quando o desenho de linha de software é usado, cada linha é expandida para um retângulo e quatro vértices são enviados para o driver.

Cada segmento de linha é desenhado com dois triângulos. A largura do primitivo é a largura especificada mais 1,0, o que pode resultar em uma linha ou coluna extra de pixels. À medida que a linha fica mais larga, o gradiente de antíalias na textura torna-se mais grosseiro, e texels mais totalmente opacos são replicados ao redor do meio. O gradiente é codificado na direção v da textura e normalmente replicado ao longo da direção u. O modo de endereçamento de textura para v é clamp.

Cada segmento de linha na lista pode ser considerado uma linha separada que começa do ponto de extremidade anterior.

A qualidade suavizadora ao longo das bordas paralela ao comprimento da linha original sofre à medida que a linha fica mais larga. Espera-se que larguras de linha maiores que 32,0 comecem a exibir artefatos ao longo dessas bordas.

D3DX