Introdução às regras de rasterização
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.
Esta é uma introdução simplificada às regras de rasterização. Para obter mais detalhes, consulte Regras de rasterização. Veja também Estágio do rasterizador (RS).
O Direct3D usa uma convenção de preenchimento superior esquerda para preencher a geometria. Essa é a mesma convenção 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 faz parte do triângulo. Os centros de pixel estão em coordenadas inteiras.
Essa descrição das regras de rasterização de triângulo usadas pelo Direct3D não se aplica necessariamente a todo o hardware disponível. Seus testes podem revelar pequenas variações na implementação dessas 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.
Na convenção de preenchimento superior esquerdo, top refere-se à localização vertical de extensões horizontais e esquerda refere-se à localização horizontal de pixels dentro de uma extensão. Uma aresta não pode ser uma aresta superior, a menos que seja horizontal. Em geral, a maioria dos triângulos tem apenas arestas esquerda e direita. A ilustração a seguir mostra uma borda superior e uma borda direita.
A convenção de preenchimento 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.
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 estará em (1,5, 2,5). Quando o rasterizador Direct3D faz o mosaico desse retângulo, o centro de cada pixel está inequivocamente dentro de cada um dos quatro triângulos e a convenção de preenchimento superior esquerdo 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.
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 nesse retângulo abrange a borda entre dois ou mais triângulos, como mostra a ilustração a seguir.
Para ambos os retângulos, os mesmos pixels são afetados, conforme mostrado na ilustração a seguir.
Os pontos são renderizados da mesma forma que os sprites de ponto, que são renderizados como quadriláteros alinhados à tela e, portanto, seguem as mesmas regras da renderização de polígonos.
As regras de renderização de linha sem suavização são exatamente as mesmas das linhas GDI.
Sprites de ponto e primitivos de patch são rasterizados como se os primitivos fossem primeiro tesselados em triângulos e os triângulos resultantes rasterizados.