從我自己的反覆試驗經驗來看,DirectX像素着色器似乎只運行在由DirectX呈現的某些幾何圖元邊界內的像素/片段,並且不運行於僅僅是幀的像素清晰的色彩。DirectX像素着色器在幀的每個像素上都像WPF像素着色器一樣操作嗎?
像素着色與頂點着色器協同工作;頂點着色器的輸出爲像素着色器提供輸入。
此鮮明對比WPF像素着色器,它們是爲框架的每個像素運行,因爲WPF不會呈現3D圖元,因此並不知道也不關心它的意思是一個幾何原始像素或清晰的像素。
因此,對於以下圖像,DirectX像素着色器只能在白色區域運行,因爲它對應於頂點着色器輸出的幾何圖元,但不是黑色區域,因爲這是純色。另一方面,WPF像素着色器將針對幀的每個像素(白色和黑色)運行。
這是理解是否正確?
如果我在我的大學課程(2年前)中沒有記錯的話,那麼您同時擁有一個頂點着色器和一個像素着色器。你傳遞到頂點着色器,然後通過像素着色器,所以是在那部分你只對那個幾何體中的像素應用效果。如果你希望像素着色器能夠影響整個場景,那麼你就可以在整個場景中傳遞紋理。所以如果你仔細想一想,在這種情況下,你確實要傳遞一個正方形的幾何圖形 – Sam