Suporte a desenho de linha em D3DX (Direct3D 9)
D3DX é uma biblioteca de utilitários que fornece serviços auxiliares. É uma camada acima do componente Direct3D.
O D3DX suporta linhas anti-alias de largura de único píxel. Os padrões de linha não são mais suportados.
A biblioteca de desenho de linhas emula linhas usando triângulos de textura e assume o seguinte:
- O hardware está disponível através das interfaces Direct3D 9.
- Pelo menos um estágio de textura está disponível.
- São utilizadas texturas 64x64.
- Estão disponíveis os seguintes modos:
- Filtragem bilinear
- Modo de endereço de limitação
- Modo de encapsulamento de endereço
- Modulado alfa op
- Mistura alfa (SRCBLEND = SRC_ALPHA, DESTBLEND = INV_SRC_ALPHA)
- Teste alfa se a mistura alfa não estiver disponível; resultado de qualidade inferior
Para antialiasing na renderização de linhas em destinos de renderização de múltiplas amostras, utilize ID3DXLine, que gera polígonos texturizados. Os valores de cobertura de pixel, gerados pela rasterização de linha antialiased, modulam o valor alfa do pixel calculado pelo sombreador de pixel. Para desenhar uma linha antialiased, um aplicativo deve habilitar a mistura alfa e, em seguida, deve definir o estado de renderização D3DRS_ANTIALIASEDLINEENABLE como TRUE.
Descrição da funcionalidade
A biblioteca suporta traçar segmentos de linhas coloridas com as seguintes características de linhas, cada uma das quais é independente de qualquer outra:
- Largura da linha
- Padrão de linha com repetição (o contador de padrão de linha é redefinido a cada chamada ID3DXLine::Draw ou ID3DXLine::DrawTransform. Ele não é redefinido com cada segmento da faixa de linha.)
- Antialiasing
- Linhas estilo OpenGL
Observação
Nenhuma mitagem é suportada.
A biblioteca usa suporte de hardware nativo para desenho de linhas (se disponível no dispositivo) apenas se:
- A largura da linha é 1.
- Nenhum padrão de linha está habilitado.
Linhas antialiased de pixel único são suportadas por alguns equipamentos, portanto, a biblioteca utiliza essas linhas, se disponíveis. O membro LineCaps da estrutura D3DCAPS9 enumera recursos de hardware para primitivos de desenho de linha.
Quando o desenho de linha do software é usado, cada linha é expandida em um retângulo e quatro vértices são enviados para o driver.
Cada segmento de linha é desenhado com dois triângulos. A largura da primitiva é 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 antialias 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 como uma linha separada que começa a partir do ponto final anterior.
A qualidade de suavização ao longo das bordas paralelas ao comprimento da linha original sofre quando a linha fica mais larga. Espera-se que larguras de linha superiores a 32,0 comecem a apresentar artefatos ao longo dessas bordas.
Tópicos relacionados