下面介紹區間掃描線算法。該算法放棄了z-buffer的思想,是 一個新的算法,這個算法被認爲是消隱算法中最快的算法
由於無論是哪種z-buffer算法,都是在像素級上處理問題 ,要進行消隱,測試
每一個像素都要進行計算判別,甚至一個像素 要進行屢次(一個像素可能會被多個多邊形覆蓋)blog
掃描線的交點把這條掃描線分紅了若干個區間,每一個區間 上必然是一樣一種顏色排序
對於有重合的區間,如a6a7這個區間,要麼顯示F2的顏 色,要麼顯示F3的顏色,不會出現顏色的跳躍效率
若是把掃描線和多邊形的這些交點都求出來,對每一個區間, 只要判斷一個像素的要畫什麼顏色,那麼整個區間的顏色都 解決了,這就是區間掃描線算法的主要思想im
算法的優勢:將象素計算改成逐段計算,效率大大提升!db
首先要有投影多邊形,而後求交點,而後交點進行排序排序img
排序的結果就分紅了一個個區間,而後在每一個區間找當中的 一個像素(i,j),co
在(i,j)處計算每一個相關面的z值,對 相關深度值z進行比較,其中最大的一個就表示是可見的。ps
整 個這段區間就畫這個z值最大面的顏色
(1)小區間上沒有任何多邊形,如[a4,a5],用背景色顯示
(2)小區間只有一個多邊形,如[a1,a2],顯示該多邊形的顏色
(3)小區間上存在兩個或兩個以上的多邊,好比[a6,a7], 必須通 過深度測試判斷哪一個多邊形可見
這個算法存在幾個問題:
一、真的去求交點嗎?利用增量算法簡化求交!
二、每段區間上要求z值最大的面,這就存在一個問題。如何 知道在這個區間上有哪些多邊形是和這個區間相關的?