如何在我的terain上獲得硬邊緣。我在GLSL中有一個簡單的環境和漫反射着色器。我認爲片段着色器是插值頂點法線並導致平滑着色。你們是否需要我的代碼,或者有可能我可以啓用一些設置?如何獲得硬邊緣 - OpenGL
當前terain無硬邊: http://twirlbound.com/uploads/terain.png
如何在我的terain上獲得硬邊緣。我在GLSL中有一個簡單的環境和漫反射着色器。我認爲片段着色器是插值頂點法線並導致平滑着色。你們是否需要我的代碼,或者有可能我可以啓用一些設置?如何獲得硬邊緣 - OpenGL
當前terain無硬邊: http://twirlbound.com/uploads/terain.png
在你的頂點着色器後光滑,做這樣的事情:
flat out vec3 v_normal;
在你的片段着色器,這樣的事情:
flat in vec3 v_normal;
flat
告訴GL爲三角形光柵化的所有片段具有相同的值。使用哪個頂點的法線取決於當前的「激發頂點」,通過調用glProvokingVertex
來設置。
放在着色器中爲我工作:)謝謝! – user1907037
要獲得硬邊像你所要求的,你需要每個三角形法線是垂直於三角形的方向來指定。爲此,您需要將它們作爲三角形發送,如同四邊形或類似的。
您還需要在繪製例程之前設置以下內容以獲得平坦着色。
glEnable(GL_FLAT);
glShadeModel(GL_FLAT);
您可以設置陰影回用
glEnable(GL_SMOOTH);
glShadeModel(GL_SMOOTH);
這傢伙沒有使用固定功能流水線,所以這是行不通的。 – dupersuper
如果你可以分享一些你可以使用的繪製例程代碼。可以更輕鬆地幫助你。 – ceorron
檢查了這一點。 http://www.opengl.org/wiki/Type_Qualifier_(GLSL)#Interpolation_qualifiers – dupersuper