Reguły rasteryzacji (Direct3D 9)
Często punkty określone dla wierzchołków nie pasują dokładnie do pikseli na ekranie. W takim przypadku funkcja Direct3D stosuje reguły rasteryzacji trójkątów, aby zdecydować, które piksele mają zastosowanie do danego trójkąta.
- reguły rasteryzacji trójkątów
- reguły punktów i wierszy
- reguł sprite punktu
Reguły rasteryzacji trójkątów
Funkcja Direct3D używa lewej górnej konwencji wypełniania do wypełniania geometrii. Jest to taka sama konwencja, która jest używana dla prostokątów w GDI i OpenGL. W trybie Direct3D środek piksela jest decydującym punktem. Jeśli środek znajduje się wewnątrz trójkąta, piksel jest częścią trójkąta. Centra pikseli znajdują się we współrzędnych całkowitych.
Ten opis reguł rasteryzacji trójkątów używanych przez funkcję Direct3D nie musi mieć zastosowania do wszystkich dostępnych sprzętów. Testowanie może ujawnić drobne różnice w implementacji tych reguł.
Na poniższej ilustracji przedstawiono prostokąt, którego lewy górny róg znajduje się w (0, 0) i którego prawy dolny róg wynosi (5, 5). Ten prostokąt wypełnia 25 pikseli, tak jak oczekiwano. Szerokość prostokąta jest definiowana jako prawa minus w lewo. Wysokość jest zdefiniowana jako dolna od góry minus.
W lewej górnej konwencji wypełniania górnej odnosi się do pionowej lokalizacji zakresów poziomych, a lewej odnosi się do poziomej lokalizacji pikseli w obrębie zakresu. Krawędź nie może być górną krawędzią, chyba że jest pozioma. Ogólnie rzecz biorąc, większość trójkątów ma tylko lewe i prawe krawędzie. Poniższa ilustracja przedstawia górną krawędź i prawą krawędź.
Konwencja wypełniania w lewym górnym rogu określa akcję wykonywaną przez direct3D, gdy trójkąt przechodzi przez środek piksela. Na poniższej ilustracji przedstawiono dwa trójkąty, po jednym na (0, 0), (5, 0) i (5, 5), a drugą na (0, 5), (0, 0) i (5, 5). Pierwszy trójkąt w tym przypadku pobiera 15 pikseli (pokazano na czarno), natomiast drugi otrzymuje tylko 10 pikseli (pokazano w kolorze szarym), ponieważ współdzielona krawędź jest lewą krawędzią pierwszego trójkąta.
Jeśli zdefiniujesz prostokąt z lewym górnym rogu (0,5, 0,5) i prawym dolnym rogu (2,5, 4,5), środkowym punktem tego prostokąta jest wartość (1,5, 2,5). Gdy rasterizator Direct3D tessellates ten prostokąt, środek każdego piksela jest jednoznacznie wewnątrz każdego z czterech trójkątów, a konwencja wypełniania w lewym górnym rogu nie jest potrzebna. Na poniższej ilustracji przedstawiono to. Piksele w prostokątze są oznaczone etykietą zgodnie z trójkątem, w którym zawiera je Direct3D.
W przypadku przeniesienia prostokąta na powyższej ilustracji tak, aby jej lewy górny róg był na (1.0, 1.0), jego prawy dolny róg w (3.0, 5.0) i jego punkt środkowy na (2.0, 3.0), Direct3D stosuje konwencję wypełniania w lewym górnym rogu. Większość pikseli w tym prostokącie przecięła obramowanie między dwoma lub większą liczbą trójkątów, jak pokazano na poniższej ilustracji.
W przypadku obu prostokątów mają wpływ te same piksele, jak pokazano na poniższej ilustracji.
Reguły punktów i wierszy
Punkty są renderowane tak samo jak sprites punktów, które są renderowane jako czworokąty wyrównane do ekranu i dlatego są zgodne z tymi samymi regułami co renderowanie wielokątne.
Reguły renderowania wierszy innych niż antyaliased są dokładnie takie same jak w przypadku wierszy GDI .
Aby uzyskać informacje na temat renderowania wierszy antyaliased, zobacz ID3DXLine.
Reguły sprite punktów
Sprites point i patch pierwotnych są rasteryzowane tak, jakby pierwotne były najpierw tessellated w trójkąty i wynikowe trójkąty rasteryzowane. Aby uzyskać więcej informacji, zobacz Point Sprites (Direct3D 9).
Tematy pokrewne