[英]GL_Triangles with Tessellation Shaders
當我使用Tessellation着色器時,我是否必須從我的CPU程序補丁而不是三角形傳遞?
glDrawArrays(GL_PATCHES, 0, 3); //Works with Tess Shaders
glDrawArrays(GL_TRIANGLES, 0, 3); //Works not with Tess Shaders
什么是補丁完全可視化它? 它可以是一個被細分的三角形嗎?
補丁只是一個沒有真正內在結構的點的集合......你的TCS和TES是有意義的。 與GL_TRIANGLES
(由3個頂點嚴格定義)不同, GL_PATCHES
每個補丁沒有預定義的頂點數。 您可以使用以下方法自行設置補丁中的頂點數:
glPatchParameteri (GL_PATCH_VERTICES, N);
// where N is some value less than GL_MAX_PATCH_VERTICES
然后,繪制的每個N
many頂點定義一個新的補丁基元。
補丁實際上只是用於評估曲面的控制點的集合。 這就是為什么有一個稱為Tessellation Control Shader
的可選階段,它將數據提供給Tessellation Evaluation Shader
。 如果沒有關於您正在評估的表面類型的更多詳細信息,關於它們可視化的唯一方法是作為點雲(例如GL_POINTS
)。
紅點是控制點( GL_PATCHES
頂點),藍線是人工的(僅為了可視化),黑色方塊是評估表面(曲面細分評估着色器的結果)。 如果您在鑲嵌細分評估之前嘗試將其可視化,那么您的補丁將只是紅點,您可能會有一段時間試圖理解它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.