Partilhar via


Regras de rasterização (Direct3D 9)

Muitas vezes, os pontos especificados para vértices não correspondem precisamente aos pixels na tela. Quando isso acontece, o Direct3D aplica regras de rasterização de triângulo para decidir quais pixels se aplicam a um determinado triângulo.

Regras de Rasterização do Triângulo

O Direct3D usa uma convenção de preenchimento superior esquerda para geometria de preenchimento. Esta é a mesma convenção que é usada para retângulos em GDI e OpenGL. No Direct3D, o centro do pixel é o ponto decisivo. Se o centro estiver dentro de um triângulo, o pixel fará parte do triângulo. Os centros de pixel estão em coordenadas inteiras.

Esta descrição das regras de rasterização de triângulo usadas pelo Direct3D não se aplica necessariamente a todo o hardware disponível. Os seus testes podem revelar pequenas variações na implementação destas regras.

A ilustração a seguir mostra um retângulo cujo canto superior esquerdo está em (0, 0) e cujo canto inferior direito está em (5, 5). Este retângulo preenche 25 pixels, exatamente como seria de esperar. A largura do retângulo é definida como direita menos esquerda. A altura é definida como inferior menos superior.

ilustração de um quadrado numerado dividido em seis linhas e colunas

Na convenção de preenchimento no canto superior esquerdo, superior refere-se à localização vertical dos vãos horizontais e esquerdo refere-se à localização horizontal dos pixels dentro de um vão. Uma aresta não pode ser uma aresta superior, a menos que seja horizontal. Em geral, a maioria dos triângulos tem apenas bordas esquerda e direita. A ilustração a seguir mostra uma borda superior e uma borda direita.

ilustração de um quadrado numerado que contém dois triângulos

A convenção de preenchimento no canto superior esquerdo determina a ação executada pelo Direct3D quando um triângulo passa pelo centro de um pixel. A ilustração a seguir mostra dois triângulos, um em (0, 0), (5, 0) e (5, 5), e o outro em (0, 5), (0, 0) e (5, 5). O primeiro triângulo, neste caso, recebe 15 pixels (mostrado em preto), enquanto o segundo recebe apenas 10 pixels (mostrado em cinza) porque a borda compartilhada é a borda esquerda do primeiro triângulo.

ilustração de um quadrado numerado que mostra dois triângulos

Se você definir um retângulo com seu canto superior esquerdo em (0,5, 0,5) e seu canto inferior direito em (2,5, 4,5), o ponto central desse retângulo está em (1,5, 2,5). Quando o rasterizador Direct3D testa esse retângulo, o centro de cada pixel está inequivocamente dentro de cada um dos quatro triângulos, e a convenção de preenchimento superior esquerda não é necessária. A ilustração a seguir mostra isso. Os pixels no retângulo são rotulados de acordo com o triângulo no qual o Direct3D os inclui.

Mostra um quadrado numerado que contém um retângulo dividido em quatro triângulos.

Se você mover o retângulo na ilustração anterior para que seu canto superior esquerdo esteja em (1.0, 1.0), seu canto inferior direito em (3.0, 5.0) e seu ponto central em (2.0, 3.0), o Direct3D aplicará a convenção de preenchimento superior esquerdo. A maioria dos pixels neste retângulo atravessa a borda entre dois ou mais triângulos, como mostra a ilustração a seguir.

ilustração de um quadrado numerado que contém um retângulo que é dividido em quatro triângulos

Para ambos os retângulos, os mesmos pixels são afetados, conforme mostrado na ilustração a seguir.

ilustração dos pixels afetados pelos dois quadrados numerados anteriores

Regras de pontos e linhas

Os pontos são renderizados da mesma forma que os sprites de pontos, que são renderizados como quadriláteros alinhados à tela e, portanto, aderem às mesmas regras da renderização de polígonos.

As regras de renderização de linha sem suavização de borda são exatamente as mesmas que as de linhas GDI.

Para obter informações sobre renderização de linha com suavização, consulte ID3DXLine.

Regras do Point Sprite

Sprites pontuais e primitivos de patch são rasterizados como se os primitivos fossem primeiro tesselados, em triângulos, e os triângulos resultantes rasterizados. Para obter mais informações, consulte Point Sprites (Direct3D 9).

Sistemas de Coordenadas e Geometria