回答
沒有直接的方式來訪問片段着色器中的頂點,頂點着色器一次只處理1個頂點,並且沒有整個基元的概念。片段着色器僅處理片段。
您可以輸出關於特定頂點的信息,並將其插入片段着色器,例如如何在三角形上混合顏色或執行紋理座標。通常情況下,無論如何,您都需要在片段着色器中進行混合處理,以便在頂點着色器中自動完成。你可以得到碎片三維空間座標(但只有碎片,而不是周圍的頂點)。
這樣說,你可以附加任何信息到你的着色器。例如,除了位置,法線和texcoords之外,還可以有一個額外的屬性,其中包含有關要在特定頂點中訪問的每個頂點的信息。如果這可能是3組x,y,z座標,如果這是你想要的信息和一個數字,表示正在處理的圖元中的哪個頂點數(即三角形中的第一個第二或第三個頂點)和/或序列號在整個網格中。或者它可能只是一個索引號,如果這是你想要的。額外的屬性會佔用更多的內存,因爲您必須複製基元中每個頂點的頂點數據,以確保片段着色器與其所有3個頂點具有相同的數據。
例如,對於每個頂點(對於三角形圖元)以下屬性:
v1, n1, uv1, v1, v2, v3, 0
v2, n2, uv2, v1, v2, v3, 1
v3, n3, uv3, v1, v2, v3, 2
v4, n4, uv4, v4, v5, v6, 0
v5, n5, uv5, v4, v5, v6, 1
v6, n6, uv6, v4, v5, v6, 2
如果你需要,你需要重複,太多的法線或紋理COORDS。
還要考慮片段着色器中的頂點信息實際上在做什麼。您可以預先計算在片段着色器中要計算的答案,而不是將所有頂點的數據發送出去,而是將答案附加爲屬性,並從頂點着色器到片段着色器進行插值。
另一種方法是將所有頂點數據轉儲到統一數據庫中並查找它。你可能仍然需要附加一些索引信息作爲頂點屬性,儘管它知道它應該查找哪個索引。另外請記住,由於每個像素都會發生查找,因此查找速度會很慢,並且您可能會發生碰撞,因爲每個頂點都將查看有關周圍信息的信息。
在較新版本的OpenGL(3.x +)幾何圖形和細化着色器中,可以訪問這種信息並將其輸出到着色器管道中的下一個東西。
有了這樣的說法,它將有助於準確地知道你要完成什麼,因爲它提供了哪些頂點數據需要傳遞給片段着色器。如果沒有訪問片段着色器中的數據,也可能有更簡單的方法來做你想做的事情。
片段着色器確實沒有鏈接到頂點着色器,而頂點着色器是每個頂點,沒有創建該幾何圖形的總集合的概念。所以你不能獲得最終產生片段着色器實例的頂點。
您試圖實現特定效果嗎?無論你想從頂點計算出來,通常都可以通過加載適當的變化來實現 - 例如,如果您將每個頂點的3d位置加載到適當的變化,那麼每個片段將固有地知道其位置。
- 1. iOS上的OpenGL ES 2:空片段和頂點着色器
- 2. GLSL:頂點着色器無片段着色片段着色器
- 3. OpenGL ES:從着色器獲取轉換的頂點
- 4. 在OpenGL ES 2.0頂點着色器中生成頂點
- 5. opengl es 2.0 - 優化片段着色器
- 6. OpenGL - 頂點或片段着色器中的紋理映射?
- 7. OpenGL ES 2.0中片段着色器的非均勻顏色值
- 8. 獲取片段着色器中頂點的TexCoords
- 9. OpenGL ES 2:簡單繪圖是否需要頂點和片段着色器?
- 10. OpenGL - 頂點着色器顏色沒有傳遞給片段着色器
- 11. OpenGL ES 2.0 - 在頂點着色器中找不到屬性
- 12. 創建使用OpenGL和頂點和片段着色器
- 13. 無法將頂點着色器中的顏色傳遞給片段着色器
- 14. OpenGL:片段vs頂點着色器的漸變?
- 15. GLSL ES頂點着色器錯誤
- 16. 確定openGL ES頂點着色器中計算的三角形的頂點
- 17. OpenGL ES:將單浮點數傳遞給頂點着色器?
- 18. OpenGL ES 2.0:屬性沒有綁定在頂點着色器
- 19. 指定頂點着色器的法線的OpenGL ES 2.0
- 20. 正確的頂點着色器代碼? OpenGL ES 2.0的
- 21. 如何使用片段着色器在OpenGL ES中繪製球體錯覺?
- 22. 如何獲取片段着色器中當前多邊形的頂點?
- 23. X射線頂點着色器的OpenGL ES 2.0
- 24. Android中的着色器在OpenGL ES中
- 25. 如何使頂點和片段着色器在three.js中工作
- 26. OpenGL片段着色器VS DirectX片段着色器
- 27. OpenGL ES(2.0)着色語言:如何在頂點着色器中輸入布爾值並傳遞給片段着色器?
- 28. 如何可視化的OpenGL ES 2.0片段着色
- 29. 頂點着色器和片段着色器
- 30. OpenGL ES 2.0點光源着色器